问题是,使用Disallow: /
将robots.txt列入白名单无法按预期工作。Google'站点地图包含受robots.txt阻止的网址'警告
谷歌有限制的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>
...
抓取/ robots.txt测试搜索控制台正确解释它,它显示这些URLs允许('取谷歌'也适用):
网站名称/
网站名称/用品/一些-文章
然而,在抓取/站点地图显示的sitemap.xml得到了问题的所有/articles/...
的URL,该警告的报告:
网站地图包含由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测试程序仅证实了这一点。
所以不允许/允许订单在这里和重要Disallow应该先来吧? – estus
你可以尝试,确实...但我更新我的答案,因为它可能会误导... – JVerstry
没有抱歉,我弄错了。我正在更新我的答案,因为它在您的案例中不正确。 – JVerstry