We have an AngularJS site using HTML5 routes. I just did some test \"Fetch as Google\" runs. The results are a bit confusing:
Google looks for #! in our site urls and then takes everything after the #! and adds it in _escaped_fragment_ query parameter. Some developers create basic html pages with real data and serve these pages from server side at the time of crawling. So , why not we render same pages with PhantomJS on serve side which has _escaped_fragment_. For more detail please read this blog .