1

Das Problem ist, dass Whitelisting robots.txt mit Disallow: / funktioniert nicht wie erwartet mit Google.Google Sitemap enthält URLs, die von robots.txt blockiert werden Warnung

Google hat Probleme mit robots.txt Regeln zu beschränken:

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

Wo sitemap.xml enthält / und zahlreiche /articles/... URLs .:

<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> 
... 

Crawl/robots.txt Tester in Google Die Suchkonsole interpretiert sie korrekt. Sie zeigt diese URLs als zulässig an ("Fetch as Google" funktioniert ebenfalls):

Site-Name/

Site-Name/articles/some-Artikel

jedoch der Bericht in Crawl/Sitemaps zeigt, dass sitemap.xml Probleme für alle /articles/... URLs bekommen hat, ist die Warnung:

Sitemap enthält Urls, die durch robots.txt blockiert

So wird nur / indexiert (es wurde sogar irgendwann aus dem Index entfernt, obwohl Google sich im Sitemap-Bericht nie beschwert hat).

Der Grund für diese Einstellung ist, dass Google richtig SPA Routen machen nicht in der Lage ist, so dass einige SPA Routen (/ und /articles/...) wurden (andere Routen als Fragmente und erlauben vorgerendert für das Crawling noch nicht vorgerendert, ist es nicht wünschenswert, um sie im Moment zum Crawlen verfügbar zu machen).

I vorübergehend ersetzt Disallow: / mit schwarzer Liste aller bekannten Routen ohne Fragmente, und das Problem verschwunden:

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

Was ist das Problem mit dem früheren Ansatz ist? Warum verhält sich Google so?

Die Regeln von robots.txt sind ziemlich eindeutig und der robots.txt-Tester von Google bestätigt dies nur.

Antwort

1

Wenn Sie allow /$ und disallow / sind, verbieten Sie Gewinne (siehe Rangfolge für Gruppenmitgliedsdatensätze in https://developers.google.com/search/reference/robots_txt).

Vergessen Sie meinen früheren Kommentar über die letzte Regel herrscht auf der ersten Regel. Es trifft in Ihrem Fall nicht zu.

Verwenden Sie zum Entfernen von Fragmenten ein kanonisches Tag. Wenn Sie nicht möchten, dass Google Ihre Seiten crawlt, legen Sie nofollow fest.

+0

Also Disallow/Erlauben Reihenfolge Angelegenheiten hier und Disallow sollte zuerst kommen, oder? – estus

+0

Sie könnten das tatsächlich versuchen ... aber ich aktualisiere meine Antwort, da es irreführend sein könnte ... – JVerstry

+0

Nein Entschuldigung, ich habe das falsch verstanden. Ich aktualisiere meine Antwort, da sie in Ihrem Fall nicht korrekt ist. – JVerstry