Having the EXACT same problem...I was thinking about figuring out how to do 
it with .htaccess, as you have done here. What did you end up doing?

On Monday, July 29, 2013 11:55:04 AM UTC-4, Daniel Kanze wrote:
>
> Using a `pushState` enabled page, normally you redirect SEO bots using the 
> `escaped_fragment` convention. You can read more about that **[here][1]**.
>
> The convention assumes that you will be using a (!#) hashbang prefix 
> before all of your URI's on a single page application. SEO bots will escape 
> these fragments by replacing the hashbang with it's own recognizable 
> convention escaped_fragment when making a page request.
>
>     //Your page
>     http://example.com/!#home
>
>     //Requested by bots as
>     http://example.com/?_escaped_fragment=home
>
> This allows the site administrator to detect bots, and redirect them to a 
> cached prerendered page.
>
>     RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
>     RewriteRule ^(.*)$  https://s3.amazonaws.com/mybucket/$1 [P,QSA,L]
>
> The problem is that the hashbang is getting phased out quickly with the 
> widely adapted pushState support. It's also really ugly and isn't very 
> intuitive to a user.
>
> So what if we used HTML5 mode where pushState guides the *entire* user 
> application?
>
>     //Your index is using pushState
>     http://example.com/
>
>     //Your category is using pushState (not a folder)
>     http://example.com/category
>
>     //Your category/subcategory is using pushState
>     http://example.com/category/subcategory
>
> Can rewrite rules guide bots to your cached version using this newer 
> convention? [Related but only accounts for index edge case.][2] Google also 
> **[has an article][3]** that suggests using an *opt-in* method for this 
> single edge case using <meta name="fragment" content="!"> in the <head> of 
> the page. Again, this is for a single edge case. Here we are talking about 
> handling every page as an *opt-in* senario.
>
>     http://example.com/?escaped_fragment=
>     http://example.com/category?escaped_fragment=
>     http://example.com/category/subcategory?escaped_fragment=
>
> I'm thinking that the `escaped_fragment` could still be used as an 
> identifier for SEO bots, and that I could extract everything inbetween the 
> the domain and this identifier to append to my bucket location like:
>
>     RewriteCond %{QUERY_STRING} ^_escaped_fragment_=$
>     # (high level example I have no idea how to do this)
>     # extract "category/subcategory" == $2
>     # from http://example.com/category/subcategory?escaped_fragment=
>     RewriteRule ^(.*)$  https://s3.amazonaws.com/mybucket/$2 [P,QSA,L]
>
> What's the best way to handle this? 
>
>   [1]: 
> https://developers.google.com/webmasters/ajax-crawling/docs/specification
>   [2]: 
> http://stackoverflow.com/questions/17108931/how-to-do-a-specific-condition-for-escaped-fragment-with-rewrite-rule-in-htacce
>   [3]: 
> https://developers.google.com/webmasters/ajax-crawling/docs/specification
>
>
> The question is up for internets here:
>
>
> http://stackoverflow.com/questions/17926219/htaccess-for-seo-bots-crawling-single-page-applications-without-hashbangs
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to