web-dev-qa-db-fra.com

Limiter l'accès au plan du site aux moteurs de recherche

J'ai un fichier sitemap qui génère le sitemap en temps réel et répertorie toutes les pages du site. Finalement, le site comportera des dizaines de milliers de pages. Il faudra donc pas mal de ressources pour générer le sitemap. Je ne veux donc pas que quiconque y accède. Ce que j'essaie de faire est similaire à celui utilisé par Stack Exchange: les moteurs de recherche qui demandent le plan du site pourront y accéder correctement. Toutefois, si une personne tente d'accéder directement au fichier du plan du site, une erreur 404 not found (non trouvée) .

Est-ce que quelqu'un pourrait me diriger dans la bonne direction pour savoir comment faire cela? J'ai déjà une règle de réécriture en place pour réécrire sitemap.xml en sitemap.php pour le script de génération; il ne reste donc plus qu'à limiter l'accès au fichier. Je préférerais le faire via un fichier .htaccess ou via le fichier vhost, mais si cela doit être fait dans le fichier PHP, qu’il en soit ainsi.

Merci

1
Chris Rutherfurd

Une façon de limiter l'accès aux moteurs de recherche consiste à publier le plan du site dans une URL secrète telle que /sitemap-poakunmecruight.xml. Au lieu d'y diriger /sitemap.xml ou de publier cette URL dans robots.txt , envoyez uniquement l'URL du plan du site aux moteurs de recherche via leurs outils pour les webmasters . De cette façon, seuls les moteurs de recherche savent où se trouve votre sitemap.

Il me semble également que générer le plan du site en temps réel peut ne pas être la meilleure solution. S'il faut des ressources pour générer (comme des requêtes de base de données), il serait préférable de le générer une fois par jour. Vous pouvez assez facilement écrire un travail cron qui exécute quelque chose comme curl -s http://example.com/sitemap.php > /var/www/example.com/sitemap.xml

On dirait que vous vous penchez pour que les agents utilisateurs reniflent uniquement pour autoriser les robots. Vous pouvez le faire via .htaccess. J'ai pris la liste des robots des moteurs de recherche de ici .

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