There might not be a perfect answer to this, but I can’t find any documentation / blogs addressing this directly.
Issue: I need to support IE8 (which my Ember app does fine), and also have SEO.
I really like Evil Trout’s blog post on SEO. However, Discourse does not support < IE9.
That blog post recommends noscript tags, coupled with the history API. This allows for really nicely optimized content for SEO, preloaded data, etc. Works great for Discourse, and seems very clean / simple.
But it doesn’t work for older browsers.
Another option would be to use Brombone or any other similar service. This would use the hashbang syntax (#!), and use PhantomJS to serve cached, static pages to Google, etc. I think this is a bit hacky in nature, but pretty easy, and would work for all browsers. But then you lose out on some of the nice, preloaded data capabilities that discourse is able to provide.
I guess a third option (which I see less documentation on), would be a combination of the Discourse approach and standard hash approach – using a fallback for older browsers. This would use noscript content for SEO, and support full capabilities of newer browsers. However, there would be duplicate urls (with and without hash).
So to sum up options (that I can think of):
- Discourse Approach (Push state; SEO through noscript tags; no IE9)
- Brombone Approach (Cached, static content; hashbang)
- Combo Approach (Discourse + hash fallback for older browsers)
Is there anything else that I am not thinking of? Has anyone had any luck with SEO + legacy browser support?
I would really like to hear the opinions / recommendations of some people on the core team, etc.