Nous avons une configuration de serveur Web de développement XAMPP Apache avec des hôtes virtuels et nous voulons empêcher les serps d'explorer tous nos sites. Cela se fait facilement avec un fichier robots.txt. Cependant, nous préférons ne pas inclure un fichier robots.txt non autorisé dans chaque vhost, puis le supprimer lorsque nous avons mis le site en ligne sur un autre serveur.
Existe-t-il un moyen avec un fichier de configuration apache de réécrire toutes les demandes vers robots.txt sur tous les vhosts dans un seul fichier robots.txt?
Si oui, pourriez-vous me donner un exemple? Je pense que ce serait quelque chose comme ça:
RewriteEngine On
RewriteRule .*robots\.txt$ C:\xampp\vhosts\override-robots.txt [L]
Merci!
apache-2.2
php
robots.txt
Michael Berkompas
la source
la source
Réponses:
Apache mod_alias est conçu pour cela et disponible à partir du système Apache de base, et peut être défini en un seul endroit avec presque aucun frais de traitement, contrairement à mod_rewrite.
Avec cette ligne dans le fichier apache2.conf, en dehors de tous les vhost, http://example.com/robots.txt - sur n'importe quel site Web qu'il sert, sortira le fichier donné.
la source
Alias
dans chaque<VirtualHost>
bloc. +1.<Location "/robots.txt"> Allow from all </Location>
immédiatement après, à l'intérieur du fichier principal<IfModule alias_module>
Placez votre
robots.txt
fichier global commun quelque part dans le système de fichiers de votre serveur accessible au processus Apache. Par exemple, je suppose que c'est le cas/srv/robots.txt
.Ensuite, pour configurer
mod_rewrite
pour servir ce fichier aux clients qui le demandent, placez les règles suivantes dans le<VirtualHost>
bloc de configuration de chaque vhost :Si vous placez les règles de réécriture dans des
.htaccess
fichiers par répertoire plutôt que dans des<VirtualHost>
blocs, vous devrez modifier légèrement les règles:la source
mod_rewrite
hack trop compliqué . UtilisezAlias
plutôt, comme suggéré par Alister.Vous ne savez pas si vous exécutez XAMPP sur Linux ou non, mais si vous l'êtes, vous pouvez créer un lien symbolique à partir de tous les hôtes virtuels vers le même fichier robots.txt, mais vous devez vous assurer que votre configuration Apache pour chaque hôte virtuel est autorisé à suivre les liens symboliques (sous la
<Directory>
directiveOptions FollowSymLinks
).la source
Approche différente de la solution.
J'héberge plusieurs (plus de 300) hôtes virtuels dans mon environnement de cluster. Afin de protéger mes serveurs contre les martelages, je définis le délai d'exploration pendant 10 secondes.
Cependant, je ne peux pas appliquer tous mes clients avec une configuration robots.txt fixe. Je laisse mes clients utiliser leur propre robots.txt s'ils le souhaitent.
Le module de réécriture vérifie d'abord si le fichier existe. S'il n'existe pas, les modules réécrivent dans ma configuration par défaut. Exemple de code ci-dessous ...
Afin de conserver la réécriture interne, un alias doit être utilisé. Au lieu de définir un nouvel alias pouvant provoquer des conflits côté utilisateur, j'ai localisé mon fichier robots.txt dans le dossier / APACHE / error / qui a déjà un alias comme configuration par défaut.
la source