問題是,使用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