web-dev-qa-db-fra.com

Les fichiers robots.txt et sitemap.xml peuvent-ils être dynamiques via une redirection .htaccess?

J'ai un site multilingue et multi-domaine. Il passe par une installation unique de CMS (Drupal), donc j'ai un seul répertoire racine. Donc, si j'ai un fichier robots.txt statique, je ne peux afficher que les fichiers d'un seul domaine, à ma connaissance.

Puis-je mettre une ligne dans .htaccess

Redirect 301 /robots.txt /robots.php

(ou instruction équivalente, et indiquez laquelle, le cas échéant)

donc il redirige vers un fichier php dynamique, où je peux servir différents contenus en fonction du $_SERVER['HTTP_Host']?

Et la même question pour sitemap.xml, afin que je puisse servir une dynamique sitemap.php qui indique des liens différents pour chaque domaine différent.

Le problème de l’absence d’utilisation de .txt et .xml est, comme indiqué, que tous les domaines partagent un seul répertoire physique sur l’ordinateur serveur.

10
Cesar

Vous pouvez rendre n'importe quel fichier dynamique. La meilleure façon de le faire ne passe pas par des redirections, mais par des règles de réécriture.

RewriteRule ^robots\.txt$  /robots.php [L]

De cette façon, vous l'activez avec un script dynamique, mais l'URL ne change pas. La plupart des robots d'exploration (y compris Googlebot) suivront les redirections pour robots.txt, mais certains robots deviendront confus si vous introduisez des redirections.

Notez que même si vous le lancez avec PHP, votre fichier robots.txt devrait semble être statique pour chaque robot pour chaque domaine. Il est bon de servir un contenu différent pour différents domaines, voire pour différents agents utilisateurs. Cependant, servir un contenu différent de manière aléatoire, ou en fonction de l'heure de la journée peut vraiment dérouter les robots d'exploration des moteurs de recherche et gâcher votre référencement.


Les sitemaps conviennent pour nommer comme vous le souhaitez. Vous pouvez les rediriger ou utiliser une règle de réécriture pour les alimenter dynamiquement à la même URL. Vous pouvez aussi les nommer comme

  • site-a-sitemap.xml
  • site-b-sitemap.xml
  • site-c-sitemap.xml

Ensuite, référez-vous à eux dans robots.txt:

Sitemap: http://www.example.com/example-sitemap.xml

ou soumettez-les manuellement aux moteurs de recherche via leurs outils de webmaster ou leur console de recherche.

11

Oui, de la même manière toute la requête peut être "dynamique".

Cependant, vous ne voudriez pas redirection (comme dans votre exemple de code), vous devriez réécrire en interne en utilisant mod_rewrite. (Identique à ce que Drupal est probablement déjà en train de faire.)

Par exemple, dans votre fichier .htaccess racine:

RewriteEngine On
RewriteRule ^robots\.txt$ robots.php [L]

RewriteEngine ne devrait apparaître qu'une seule fois (bien que cela ne soit pas grave si cela se produit plusieurs fois).

Assurez-vous simplement que cela n’entre pas en conflit avec d’autres directives de votre fichier .htaccess. Donc, cela devrait probablement être près de le début du fichier, certainement avant votre contrôleur frontal.

5
MrWhite

Rendre le fichier de plan de site dynamique est correct - c'est un bon moyen de mettre à jour automatiquement vos plans de site.

Rendre le fichier robots.txt dynamique (pour le même hôte! Faire cela pour des hôtes distincts est essentiellement un fichier robots.txt normal pour chacun d’eux.) Cela poserait probablement des problèmes: il n’est pas analysé chaque fois qu’une URL est analysée à partir du site. , il peut donc arriver que la "mauvaise" version soit mise en cache. Par exemple, si vous faites l'analyse du bloc de fichier robots.txt pendant les heures de bureau, il est alors possible de le mettre en cache et de le suivre pendant un jour, ce qui signifie que rien ne sera analysé (ou alternativement mis en cache lorsque l'analyse est autorisée). Par exemple, Google analyse le fichier robots.txt environ une fois par jour pour la plupart des sites.

4
John Mueller

Il n'est pas nécessaire de créer sitemap.php pour les raisons suivantes: 1. Pour chaque langue, vous pouvez exécuter un fichier sitemap.xml distinct et le spécifier dans les consoles des moteurs de recherche. 2. Les fichiers de plan de site standard peuvent être ré-écrits régulièrement pour inclure du contenu récent, ce qui les rend dynamiques - pour cette raison, le .php n'est pas requis. C'est au mécanisme de mise à jour interne et au cron de recréer le même fichier avec l'extension standard .xml

Les fichiers Sitemap.xml sont statiques et seules les mises à jour les rendent dynamiques - ils ne se mettent pas à jour en temps réel. Il est possible de les faire réécrire toutes les minutes, mais cela n’est pas nécessaire car: 1. Google ne le vérifie pas dans moins d’une heure depuis la dernière soumission. 2. Lorsque les fichiers de sitemap sont volumineux, réécrivez-les. souvent rendra la performance du serveur kaput.

Lorsque le volume de données est important et que le fichier sitemap dépasse 50 Mo, un système avec plusieurs sitemaps est requis. Cela signifie que sitemap2,3 ... .xml s'ajoute à la liste du fichier principal, mais le contenu de ces fichiers reste également corrigé jusqu'à ce que ces fichiers soient recréés (par cron, par exemple).

De plus, une fois qu'un moteur de recherche a accédé au fichier, il n'y reviendra pas très rapidement (à moins que cela soit fait manuellement). Cela confirme qu'il n'est en aucun cas nécessaire de créer une mise à jour en temps réel de sitemap.php, car un fichier sitemap.xml normal peut être dynamique en lui-même, en mettant à jour un nouveau contenu au cours de la journée ou de la semaine.

Je ne vois aucun professionnel utilisant un sitemap.php. Cela ne servira à rien, car il existe d'autres moyens plus efficaces d'utiliser ces fichiers.

0
Inducto