我已按照Google网站上的说明通过添加以下元标记在我的AngularJS网站上启用Ajax抓取:
<meta name="fragment" content="!">
呈现的内容包含以下链接:
<a href="/user/1">User 1</a>
<a href="/user/2">User 2</a>
<a href="/user/3">User 3</a>
还有一些Ajax标签可以呈现动态内容,如:
<a href="#!/popular">Popular</a>
<a href="#!/recent">Recent</a>
查看服务器日志,GoogleBot确实传入并正确传入了Uri中的_escaped_fragement,这是正确的:
_escaped_fragment_=%2fpopular
_escaped_fragment_=%2frecent
问题是使用site:www.somesite.com查看实际索引内容并登录服务器,我看到GoogleBot试图索引以下页面:
/user/1/#!/popular
/user/1/#!/recent
为什么会发生类似这样的事情,因为那些网址是相对的而且没有#!在他们上表示ajax内容,有没有办法防止这种情况?
答案 0 :(得分:1)
如果这些网址在所有网页上都可用,则只需添加它们即可。
所以,如果我转到:<a href="/user/1">User 1</a>
并且页面再次<a href="#!/popular">Popular</a>
,那么Google加载它是合乎逻辑的:/user/1#!/popular
您可能想知道我已经使用Github上的脚本解决了这个难题:https://github.com/kubrickology/Logical-escaped_fragment
使用以下代码构建您的AJAX页面:__init()