Comment créer un fichier robots.txt pour tous les domaines sur le serveur Apache

10

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!

Michael Berkompas
la source
robots.txt n'est pas obligatoire et certains robots d'exploration l'ignoreront. Elle ne doit pas être considérée comme un élément de sécurité. Si vous souhaitez masquer votre site jusqu'à ce qu'il soit prêt à être rendu public, ajoutez l'authentification.
Mircea Vutcovici

Réponses:

25

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.

Alias /robots.txt C:/xampp/vhosts/override-robots.txt

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é.

Alister Bulman
la source
Ce. Mettez un Aliasdans chaque <VirtualHost>bloc. +1.
Steven lundi
Merci! Cela a parfaitement fonctionné. Je savais qu'il y avait une solution facile ...
Michael Berkompas
Si vous le souhaitez sur chaque hôte virtuel, vous n'avez pas besoin de le mettre dans chacun d'eux. Il peut aller à un niveau global, comme l'alias par défaut / manuel.
Alister Bulman
Merci pour la solution bien que voir C: / dedans me fasse mal au ventre sachant qu'il y a un autre serveur Windows :) Je mets ma modification dans mon fichier modules.conf ou dans mods-enabled / alias.conf comme ceci: Alias /robots.txt /var/www/robots.txt
connecté
1
Pour vous assurer que ce fichier est disponible même lorsque d'autres contrôles d'accès le bloqueront, placez l'alias, et <Location "/robots.txt"> Allow from all </Location>immédiatement après, à l'intérieur du fichier principal<IfModule alias_module>
Walf
1

Placez votre robots.txtfichier 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_rewritepour servir ce fichier aux clients qui le demandent, placez les règles suivantes dans le <VirtualHost>bloc de configuration de chaque vhost :

RewriteEngine on
RewriteRule ^/robots.txt$ /srv/robots.txt [NC, L]

Si vous placez les règles de réécriture dans des .htaccessfichiers par répertoire plutôt que dans des <VirtualHost>blocs, vous devrez modifier légèrement les règles:

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]
Steven Monday
la source
Pourriez-vous expliquer ceci "Placez votre fichier global robots.txt commun quelque part dans le système de fichiers de votre serveur qui est accessible au processus apache. Par souci d'illustration, je suppose qu'il se trouve dans /srv/robots.txt." plus en détail? J'ai besoin de savoir ce que vous voulez dire en créant un répertoire disponible pour le processus apache?
Michael Berkompas
Chaque site est contenu dans un dossier comme testsite.int.devcsd.com sous C: \ xampp \ vhosts
Michael Berkompas
@Michael: Ne vous embêtez pas avec ce mod_rewritehack trop compliqué . Utilisez Aliasplutôt, comme suggéré par Alister.
Steven lundi
0

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>directive Options FollowSymLinks).

gravyface
la source
Je préfère ne pas avoir à modifier chaque déclaration vhost. Il y en a plus de 30 ... De plus, je veux que ce soit un survoltage automatique afin que je n'aie rien à faire quand je crée un nouveau vhost.
Michael Berkompas
Michael, utilisez simplement sed pour faire une édition de masse, des trucs assez faciles, vous n'avez certainement pas besoin de le faire manuellement. Décrit comment le faire ici en bas: blog.netflowdevelopments.com/2012/10/11/…
unc0nnected
0

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.

<Directory /HOSTING/*/*/public_html>
        Options SymLinksIfOwnerMatch
        <Files robots.txt>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule (.*) - [L]
                RewriteRule (.*) /error/robots.txt [L]
        </Files>
</Directory>
aesnak
la source