For now, I'm using .htaccess like this:

    RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
    RewriteRule ^$ /snapshots/index.html? [L,NC]
    RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
    RewriteRule ^(.*)$ /snapshots/$1.html? [L,NC]

Not sure if there's a better solution, but it's working for me so far. Just 
be sure to have the directory structure for your snapshots match the URL 
structure.


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