I have created a blog for a friend.

I have heavily designed it around jQuery's $.ajax() function and as a result it is only a single webpage asynchronously gets its data (title, article, relative image paths, etc.) from the database.

To navigate, a visitor can do the following:

  • Type on a given search <input>, site will give buttons, and then when a button is pressed, show the data asynchronously to the document area of the site
  • Press on the default buttons, and the page will load the data asynchronously to the document area of the site

Being a single page website that does all this, I don't utilize the URL at all. All transfer of data is via POST.

My problem is this: will the page's CONTENTS, if ever published online, be searchable by search engines?

By contents I mean all of the sites available titles, written articles, comments, etc. be searchable if I code it in this manner?

A fellow programmer criticized me for this because, according to him I should have instead created an application that created the whole HTML files for the site whenever there are new articles are written, and use URL for navigation so google and other search engines can maximize searching. Is this true?

*by single page, I meant that the viewer can visit a single webpage of the site alone, and does not have to go anywhere else. There are other pages as well:

  • For the admin to write new articles, there is a separate single webpage that performs CRUD operations.
  • I also have a webpage that produces JSON when you POST to it.
  • What can I do to improve the question, downvoter? – Malky.Kid Aug 17 '17 at 7:04
  • SEO aside, are you saying you can't share a link to a specific article? That seems like a basic requirement for a blog, that I can do this blog.jonrshar.pe/2017/May/14/eleanor-rigbot.html instead of saying "visit my blog and search for the Beatles". You should think about the costs and benefits of SPAs vs. MPAs and how those pros and cons map to the specific kind of site you're building. – jonrsharpe Aug 17 '17 at 7:08
  • @jonrsharpe I haven't thought about sharing links, my bad. But what if I implement a GET? (www.myblog.com?article=thisArticle), will that be the same? – Malky.Kid Aug 17 '17 at 7:12
  • @jonrsharpe if yes, how will that factor in the SEO? – Malky.Kid Aug 17 '17 at 7:14
  • 2
    There are plenty of resources out there on SPA SEO if you decide to continue on this path. – jonrsharpe Aug 17 '17 at 7:29

I have read from Pawel Skolski of Neoteric and from uxpin about Single Page applications and Multiple Page Applications.

In summary, they state that MPAs are better for what I am trying to achieve, as each page can be optimized with keywords for SEO.

In case of blogs, where each Article is preferably able to be found by search engines, this is the way to go.

The root problem stems from a lack of understanding how Google(and most other) search engines work.

Doing a lot of reading about how googlebot works now, I now understand that I have to follow Progressive Enhancement regardless if it's a blog, or any other site:

  • Basic content should be accessible to all web browsers (So far my content can be produced in IE 9. I think it will have trouble in IE8 )
  • Basic functionality should be accessible to all web browsers (same as above)
  • Sparse, semantic markup contains all content
  • Enhanced layout is provided by externally linked CSS (no problem here)
  • Enhanced behavior is provided by unobtrusive, externally linked JavaScript (that's the problem right there, my SPA site DEPENDS on javascript to produce the content.)
  • End-user web browser preferences are respected (I have been doing it wrong. Mine does the ff: if javascript is turned off ask them to turn it on, if browser is IE, recommend them to use Chrome, Safari or Firefox instead.)

    Overall, I will have to rewrite my SPA site into a hybrid that will cater above principles.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.