Google的Sitemap包含被robots.txt阻止的网址警告

时间:2016-11-21 21:21:04

标签: single-page-application sitemap google-search robots.txt google-webmaster-tools

问题是,Disallow: /的白名单robots.txt无法按预期与Google一起使用。

Google在限制robots.txt规则方面存在问题:

User-agent: *
Host: sitename
Allow: /$
Allow: /sitemap.xml
Allow: /static/
Allow: /articles/
Disallow: /
Disallow: /static/*.js$

其中sitemap.xml包含/和多个/articles/...网址。

<url><loc>http://sitename/</loc><changefreq>weekly</changefreq></url>
<url><loc>http://sitename/articles/some-article</loc><changefreq>weekly</changefreq></url>
<url><loc>http://sitename/articles/...</loc><changefreq>weekly</changefreq></url>
...
Google搜索控制台中的

Crawl / robots.txt Tester 会正确解释它,它会将这些网址显示为允许(“抓取为Google”也可以):

  

网站名称/

     

网站名称/物品/一些-制品

但是,抓取/站点地图中的报告显示sitemap.xml存在所有/articles/...个网址的问题,警告为:

  

站点地图包含被robots.txt阻止的网址

因此,只有/被编入索引(甚至在某些时候甚至从索引中删除了,尽管谷歌从未在网站地图报告中抱怨过它。)

此设置背后的原因是Google无法正确呈现SPA路由,因此某些SPA路由(//articles/...)已预先呈现为片段并允许进行爬网(其他路由不是预先渲染,目前不宜让它们可用于爬行。)

我临时用所有已知路线的黑名单替换Disallow: /没有碎片,问题就消失了:

User-agent: *
Host: sitename
Allow: /$
Allow: /sitemap.xml
Allow: /static/
Allow: /articles/
Disallow: /blacklisted-route1
Disallow: /blacklisted-route2
...
Disallow: /static/*.js$

前一种方法有什么问题?为什么Google的行为如此?

robots.txt规则非常明确,Google的robots.txt测试人员只确认了这一点。

1 个答案:

答案 0 :(得分:1)

当您allow /$disallow /时,禁止获胜(请参阅https://developers.google.com/search/reference/robots_txt中的群组成员记录的优先顺序。)

忘记我之前关于最后一条规则的评论在第一条规则上占优势。它不适用于您的情况。

要删除片段,请使用规范标记。如果您不希望Google抓取您的网页,请设置nofollow