it-swarm.com.de

Beschränken Sie den Sitemap-Zugriff auf Suchmaschinen

Ich habe eine Sitemap-Datei, die die Sitemap in Echtzeit generiert und jede Seite auf der Website auflistet. Irgendwann wird die Site Zehntausende von Seiten haben, so dass die Erstellung der Sitemap einige Ressourcen in Anspruch nimmt, damit nicht nur jeder auf die Sitemap zugreifen kann. Was ich versuche zu erreichen, ist etwas Ähnliches wie bei Stack Exchange, wo Suchmaschinen, die die Sitemap anfordern, ordnungsgemäß darauf zugreifen können. Wenn eine Person jedoch versucht, direkt auf die Sitemap-Datei zuzugreifen, wird ein Fehler 404 angezeigt, der nicht gefunden wurde .

Könnte mich jemand in die richtige Richtung weisen, wie das geht. Ich habe bereits eine Umschreiberegel, um sitemap.xml in sitemap.php für das generierende Skript umzuschreiben. Jetzt muss nur noch der Zugriff auf die Datei eingeschränkt werden. Ich würde es vorziehen, dies über eine .htaccess-Datei oder über die vhost-Datei zu tun, aber wenn es in der PHP getan werden muss, ist es so.

Vielen Dank

1

Eine Möglichkeit, den Zugriff auf Suchmaschinen einzuschränken, besteht darin, die Sitemap unter einer geheimen URL wie /sitemap-poakunmecruight.xml zu veröffentlichen. Anstatt /sitemap.xml darauf zu verweisen oder diese URL in robots.txt zu veröffentlichen, senden Sie die Sitemap-URL nur über ihre Webmaster-Tools an Suchmaschinen . Auf diese Weise wissen nur Suchmaschinen, wo sich Ihre Sitemap befindet.

Mir fällt auch auf, dass das Generieren der Sitemap in Echtzeit möglicherweise nicht die beste Lösung ist. Wenn die Generierung Ressourcen erfordert (wie Datenbankabfragen), ist es besser, sie nur einmal am Tag zu generieren. Sie könnten ziemlich leicht einen Cron-Job schreiben, der so etwas wie curl -s http://example.com/sitemap.php > /var/www/example.com/sitemap.xml ausführt.

Es hört sich so an, als würden Sie sich dem Schnüffeln von Benutzeragenten zuwenden, um nur Bots zuzulassen. Sie können dies über .htaccess tun. Ich habe die Liste der Suchmaschinen-Bots von hier übernommen.

BrowserMatchNoCase adsbot-google search_engine_bot
BrowserMatchNoCase aolbuild search_engine_bot
BrowserMatchNoCase baidu search_engine_bot
BrowserMatchNoCase bingbot search_engine_bot
BrowserMatchNoCase bingpreview search_engine_bot
BrowserMatchNoCase duckduckgo search_engine_bot
BrowserMatchNoCase googlbot search_engine_bot
BrowserMatchNoCase mediapartners-google search_engine_bot
BrowserMatchNoCase msnbot search_engine_bot
BrowserMatchNoCase Slurp search_engine_bot
BrowserMatchNoCase teoma search_engine_bot
BrowserMatchNoCase yandex search_engine_bot

<Files "sitemap.php">
    Order Deny,Allow
    Deny from all
    Allow from env=search_engine_bot
</Files>
1