Here is Google's full AJAX crawling specification: https://developers.google.com/webmasters/ajax-crawling/docs/specification
The robots will see the #!
and transform them into _escaped_fragment_
URLs, just like you mentioned. The <meta name="fragment" content="!">
tag is only necessary for pages that don't have the #!
, for example your home page or any HTML5 push state URLs. If the URL has a #!
, Google will automatically ask for the _escaped_fragment_
without checking for <meta name="fragment" content="!">
If Google crawls http://example.com?_escaped_fragment_=/abc
and finds a link on that page for /#!/xyz
, it will make a separate request for http://example.com?_escaped_fragment_=/xyz
.
So you should always have your URLs link to the #!
URL, never to a _escaped_fragment_
URL. Google will transform them on its own.