谷歌没有正确索引AJAX应用程序的起始页面(index.html),但所有子页面都包含hashbang(#!)

谷歌没有正确索引AJAX应用程序的起始页面(index.html),但所有子页面都包含hashbang(#!),ajax,angularjs,google-crawlers,hashbang,google-index,Ajax,Angularjs,Google Crawlers,Hashbang,Google Index,我遵循谷歌的指导方针,使我的AngularJS应用程序能够为SEO目的爬行。所以我在用#!(hashbang)在我的路线配置中: $locationProvider.hashPrefix('!'); 因此,我的URL如下所示: http://www.example.com/#!/page1.html http://www.example.com/#!/page2.html 当google将散列(#!)替换为?\u转义\u片段时,我通过我的.htaccess文件将google机器人

我遵循谷歌的指导方针,使我的AngularJS应用程序能够为SEO目的爬行。所以我在用#!(hashbang)在我的路线配置中:

    $locationProvider.hashPrefix('!');
因此,我的URL如下所示:

http://www.example.com/#!/page1.html

http://www.example.com/#!/page2.html

当google将
散列(#!)
替换为
?\u转义\u片段
时,我通过我的
.htaccess
文件将google机器人重定向到页面快照:

DirectoryIndex index.html

RewriteEngine On

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$

RewriteRule ^(.*)$ /snapshot/%1? [NC,L]
到目前为止,一切都很顺利。当机器人请求以下URL
http://www.example.com/#!/page1.html
它将取代hashbang并实际请求
http://www.example.com/?_escaped_fragment_=/page1.html
我将其重定向到所请求页面的静态/预呈现版本

因此,我通过搜索控制台提交了我的
sitemap.xml
。我的站点地图中的所有URL都由google正确索引,但不是域本身。这意味着像这样的页面:

http://www.example.com/#!/page1.html 
索引正确,通过谷歌搜索我的任何子页面的特定内容,谷歌可以找到正确的页面。问题在于
start/homepage
本身,“自然”没有hashbang:

http://www.example.com/
这里的hashbang是在用户访问站点时附加的(通过路由器配置中的javascript)。但谷歌机器人似乎并非如此

因此爬虫程序没有“看到”hashbang,因此这里没有使用静态版本,这是一个大问题,因为特别是在这里,我提供了最重要的内容。 我已经尝试通过
.htaccess
/
重写并重定向到
/#/但这会导致许多重定向,并使所有内容崩溃。我也试着用

<meta name="fragment" content="!">

index.html
的标题中。但这毫无帮助。 以前有人遇到过这个问题吗