web-dev-qa-db-fra.com

Servir un fichier robots.txt différent pour chaque site hébergé dans le même répertoire

Nous avons un projet de site Web de marque globale pour lequel nous ne travaillons que pour la partie LATAM. Il existe un processus d’installation de site Web qui permet d’installer un site Web avec plusieurs ccTLD afin de réduire les coûts.

Pour cette raison, le fichier robots.txt dans www.domain.com/robots.txt est le même fichier dans www.domain.com.ar/robots.txt.

Nous aimerions implémenter des fichiers robots.txt personnalisés pour chaque pays LATAM (AR, CO, CL, etc.). Une solution à laquelle nous pensons consiste à placer une redirection à www.domain.com.ar/robots.txt to 301 à www.domain.com.ar/directory/robots.txt.

De cette manière, nous pourrions avoir des fichiers robots.txt personnalisés pour chaque pays.

  1. Est-ce que ça a du sens?
  2. Est-il possible de rediriger un fichier robots.txt vers un autre fichier robots.txt?
  3. D'autres suggestions?

Merci d'avance pour toute contribution que vous pourriez avoir.

6
Edgar Quintero

Je ne compterais pas sur tous les araignées capables de suivre une redirection pour accéder à un fichier robots.txt. Voir: Google respecte-t-il l'en-tête de redirection de robots.txt vers un nom de fichier différent?

En supposant que vous êtes hébergé sur un serveur Apache, vous pouvez utiliser mod_rewrite à partir de votre fichier .htaccess pour servir le fichier correct pour le domaine correct:

RewriteEngine On
RewriteCond %{HTTP_Host} ^www\.example\.([a-z\.]+)$
RewriteRule ^robots.txt /%1/robots.txt [L]

Dans ce cas, votre fichier robots.txt pour votre domaine .cl serait dans /cl/robots.txt et votre fichier .com.aurobots.txt sera dans /com.au/robots.txt.

9

Bien que cela devrait fonctionner, il présente quelques inconvénients potentiels:

  • Chaque robot doit faire deux requêtes HTTP: une pour découvrir la redirection, et une autre pour récupérer le fichier.

  • Certains robots pourraient ne pas gérer correctement la réponse 301 pour robots.txt; Il n'y a rien dans la spécification originale de robots.txt qui en dit long sur les redirections. Il est donc probable qu'elles devraient être traitées de la même manière que pour les pages Web ordinaires (c'est-à-dire suivies), mais rien ne garantit que all Les innombrables robots susceptibles de vouloir explorer votre site obtiendront ce droit.

    (Le 1997 Internet Draft indique explicitement que " [o] n réponse du serveur indiquant la redirection (code d'état HTTP 3XX), un robot doit suivre les redirections jusqu'à ce qu'une ressource puisse être trouvé ", mais comme cela n’a jamais été transformé en norme officielle, il n’est pas vraiment nécessaire que les robots d'exploration la suivent.)

En règle générale, il serait préférable de simplement configurer votre serveur Web pour qu'il renvoie un contenu différent pour robots.txt en fonction du domaine pour lequel il est demandé. Par exemple, en utilisant Apache mod_rewrite , vous pouvez réécrire en interne robots.txt dans un fichier spécifique au domaine, comme suit:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^(www\.)?domain(\.com?)?\.([a-z][a-z])$
RewriteCond robots_%3.txt -f
RewriteRule ^robots\.txt$ robots_%3.txt [NS]

Ce code, placé dans un fichier .htaccess à la racine du document partagé des sites, doit réécrire les demandes éventuelles, par exemple. www.domain.com.ar/robots.txt dans le fichier robots_ar.txt, à condition qu'il existe (c'est ce que vérifie le second RewriteCond). Si le fichier n'existe pas ou si le nom d'hôte ne correspond pas à l'expression rationnelle, le fichier standard robots.txt est servi par défaut.

(Le nom d'hôte regexp doit être suffisamment souple pour correspondre également aux URL sans le préfixe www. et pour accepter également le 2LD co. au lieu de com. (comme dans domain.co.uk) ou même un simple ccTLD après domain; si nécessaire, vous pouvez l’ajuster pour accepter encore plus de cas. Notez que je n’ai pas testé ce code, il pourrait donc avoir des bugs/fautes de frappe.)

Une autre possibilité serait de réécrire en interne les demandes de robots.txt dans (par exemple) un script PHP, qui peut ensuite générer le contenu du fichier de manière dynamique en fonction du nom d'hôte et de tout autre élément de votre choix. Avec mod_rewrite, cela pourrait être accompli simplement avec:

RewriteEngine On
RewriteBase /

RewriteRule ^robots\.txt$ robots.php [NS]

(L'écriture du script robots.php réel] est laissée sous forme d'exercice.)

4
Ilmari Karonen