web-dev-qa-db-fra.com

Utilisation correcte du fichier robots.txt

Avec la récente mise à jour de Google, un Robots.txt Le fichier est encore plus important qu’avant. La mise à jour Robots.txt de Joomla autorise maintenant le répertoire des modèles (ou plutôt ne = interdire le). Mais j'ai vu des cas où Google veut accéder à /modules/ (et aussi /libraries/ pour les sites utilisant le framework Gantry).

Pourquoi le fichier par défaut robots.txt interdit-il ces répertoires, alors que de nombreuses extensions peuvent en avoir besoin?

4
johanpw

Pour répondre à votre question, je pense que vous devez comprendre le rôle de robots.txt, qui, vu les très récents modifications de la convivialité pour les mobiles dans l'algorithme de Google, est un sujet sur lequel je viens de travailler. .

robots.txt existe pour "demander" que les moteurs de recherche et autres agents utilisateurs de ce type n'indexent pas le contenu spécifié du site Web dans le fichier. La grande majorité des sites Web contiennent des fichiers qui n'ont aucun sens à indexer car ils sont internes au fonctionnement du site (Joomla, ainsi que la plupart des autres CMS, etc.). Joomla 3.x est livré avec un robots.txt qui permet l'indexation de la racine, du dossier/media et du dossier/templates car ceux-ci contiennent le fichier nécessaire au rendu "correct" de la page.

Maintenant, le format de robots.txt est pas réellement défini beastie, mais en gros, il contient un ou plusieurs "groupes" de spécifications d'URL, chaque "groupe" correspondant à un agent utilisateur spécifique. (dans la plupart des cas, lisez ceci comme "bot de moteur de recherche").

D'après mon expérience, la plupart des fichiers robots.txt ne possèdent qu'un seul "groupe" pour l'agent utilisateur, qui est * (c'est-à-dire tous les types d'agent utilisateur). Dans ces "groupes", une séquence de lignes spécifiant chacune une "action", puis un chemin (soit un répertoire, par exemple /admininistrator/ ou un ensemble de fichiers, par exemple /images/*.html ou un fichier spécifique /administrator/index.php). Exemple extrait:

User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/

Maintenant, le "problème" se pose parce que la seule "action" acceptée universellement est Disallow, c'est-à-dire "s'il vous plaît, agent utilisateur, n'indexez pas le chemin spécifié à droite". J'utilise cette formulation parce que robots.txt n'est qu'un mécanisme de demande, c'est-à-dire que ses actions ne sont pas contraignantes, l'agent de visite peut choisir de respecter les actions ou de les ignorer.

En l'occurrence, Googlebot autorise l'utilisation d'une action Allow, mais à l'heure actuelle, il s'agit du seul moteur de recherche à indiquer que tel est le cas. Je vous conseille donc de ne pas vous en fier .

En gros, le problème se résume à ceci: vous ne voulez pas que les fichiers "internes" qui font fonctionner Joomla soient indexés, mais vous ne voulez pas non plus en révéler trop à la structure interne de votre site Web. pas tout à fait mutuellement exclusif, mais ne sont pas loin.

Compter entièrement sur Disallow signifie que je pense que vous ne disposez pas de beaucoup d’options pour arriver à un robots.txt qui soit gérable, ne dit pas trop aux malintents mais en résulte dans Google et al indexant seulement ce que vous voulez.

L’approche que j’ai choisie (à ne pas faire chez nous) consiste à patcher /libraries/joomla/document/document.php afin de modifier subtilement le comportement des méthodes addScript et addStyleSheet. Pour moi, ce qu’ils font maintenant, c’est de vérifier s’il existe une version du script/feuille de style spécifié à un emplacement tel que /media/<original path> et aussi de vérifier s’il existe des versions minifiées de .js et .css fichiers (la minification est un tout autre sujet). J'ai ensuite un script que j'exécute régulièrement et qui vérifie partout Disallow dans le robots.txt qui contient les fichiers multimédias et les copie dans le même type d'URL, mais sous /media.

Ainsi, j’utilise aussi Gantry, mais les fichiers gantry sont maintenant copiés dans /media et, comme mon robot.txt n’inclut aucune référence à /media/, les ressources nécessaires pour "corriger" "rendu ne sont pas bloqués mais j’ai également un fichier robots.txt minimal et gérable.

6
Mark Bradley

Le fichier par défaut robots.txt Ressemble actuellement à ceci:

User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Disallow: /components/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /layouts/
Disallow: /libraries/
Disallow: /logs/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/

Selon l'excellente réponse de @Mark Bradley, le format du fichier robots.txt n'est pas bien défini, mais si vous souhaitez principalement autoriser Google à accéder aux ressources qu'il souhaite voir, je suggère de modifier le fichier robots.txt par défaut afin d'inclure des instructions permettant à les dossiers pouvant éventuellement contenir des fichiers CSS et JS tels que celui-ci ou similaire:

User-agent: *
Disallow: /administrator/
Disallow: /bin/
Disallow: /cache/
Disallow: /cli/
Allow: /components/*.css
Allow: /components/*.js
Disallow: /components/
Allow: /includes/*.css
Allow: /includes/*.js
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Allow: /layouts/*.css
Allow: /layouts/*.js
Disallow: /layouts/
Allow: /libraries/*.css
Allow: /libraries/*.js
Disallow: /libraries/
Disallow: /logs/
Allow: /modules/*.css
Allow: /modules/*.js
Disallow: /modules/
Allow: /plugins/*.css
Allow: /plugins/*.js
Disallow: /plugins/
Disallow: /tmp/

Remarques:

Les robots d'indexation Web recherchent la règle la plus spécifique ou la plus longue lors de la détermination de la règle à appliquer. Par exemple, Allow: /modules/*.css Remplace Disallow: /modules/

1
Neil Robertson