Question

J'ai un peu un serveur intermédiaire sur Internet qui exécute des copies du code de production pour quelques sites Web. Je ne voudrais vraiment pas que les sites de transfert soient indexés.

Existe-t-il un moyen de modifier mon httpd.conf sur le serveur de transfert pour bloquer les moteurs de recherche?

Changer le fichier robots.txt ne fonctionnerait pas vraiment, car j’utilise des scripts pour copier le même code sur les deux serveurs. De plus, je préférerais ne pas changer les fichiers de configuration de l'hôte virtuel, car il existe de nombreux sites et je ne veux pas avoir à oublier de copier un paramètre donné si je crée un nouveau site.

Était-ce utile?

La solution

Créez un fichier robots.txt avec le contenu suivant:

User-agent: *
Disallow: /

Placez ce fichier quelque part sur votre serveur de transfert; la racine de votre répertoire est un excellent endroit pour cela (par exemple, /var/www/html/robots.txt ).

Ajoutez les éléments suivants à votre fichier httpd.conf:

# Exclude all robots
<Location "/robots.txt">
    SetHandler None
</Location>
Alias /robots.txt /path/to/robots.txt

La directive SetHandler n'est probablement pas obligatoire, mais peut être nécessaire si vous utilisez un gestionnaire tel que mod_python, par exemple.

Ce fichier robots.txt sera désormais servi pour tous les hôtes virtuels de votre serveur, en remplacement de tout fichier robots.txt que vous pourriez avoir pour des hôtes individuels.

(Remarque: ma réponse est essentiellement la même chose que la réponse de ceejayoz suggère que vous le fassiez, mais j'ai dû passer quelques minutes de plus à trouver tous les détails pour que cela fonctionne. J'ai décidé de la mettre ici pour la des autres qui pourraient tomber sur cette question.)

Autres conseils

Vous pouvez utiliser le mod_rewrite d'Apache pour le faire. Supposons que votre hôte réel est www.example.com et que votre hôte de transfert soit staging.exemple.com. Créez un fichier appelé 'robots-staging.txt' et réécrivez conditionnellement la demande pour y accéder.

Cet exemple convient à la protection d'un site intermédiaire unique, un cas d'utilisation un peu plus simple que ce que vous demandez, mais cela a fonctionné de manière fiable pour moi:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Dissuade web spiders from crawling the staging site
  RewriteCond %{HTTP_HOST}  ^staging\.example\.com$
  RewriteRule ^robots.txt$ robots-staging.txt [L]
</IfModule>

Vous pouvez essayer de rediriger les araignées vers un fichier maître robots.txt sur un autre serveur, mais Certaines des araignées peuvent hésiter après avoir reçu autre chose qu'un "200 OK". ou " 404 non trouvé " retourne le code de la requête HTTP et ne lira pas l’URL redirigée.

Voici comment vous feriez cela:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # Redirect web spiders to a robots.txt file elsewhere (possibly unreliable)
  RewriteRule ^robots.txt$ http://www.example.com/robots-staging.txt [R]
</IfModule>

Pourriez-vous alias Robots.txt sur les hôtes virtuels de transfert en un fichier robots.txt restrictif hébergé dans un emplacement différent?

Pour vraiment empêcher les pages d'être indexées, vous devez masquer les sites situés derrière Authentification HTTP . Vous pouvez le faire dans votre configuration globale Apache et utiliser un simple fichier .htpasswd.

Le seul inconvénient est que vous devez maintenant saisir un nom d'utilisateur / mot de passe lors de la première navigation sur une page du serveur de stockage intermédiaire.

En fonction de votre scénario de déploiement, vous devez rechercher des moyens de déployer différents fichiers robots.txt sur dev / stage / test / prod (ou toute combinaison de ceux-ci). En supposant que vous avez différents fichiers de configuration de base de données ou (ou quelque chose d'analogue) sur les différents serveurs, cela devrait suivre un processus similaire (vous avez des mots de passe différents pour vos bases de données, non?)

Si vous n’avez pas mis en place de processus de déploiement en une étape, c’est probablement une bonne motivation pour en obtenir un ... il existe une multitude d’outils disponibles pour différents environnements - Capistrano est un très bon outil et est favorisé dans monde Rails / Django, mais n’est en aucun cas le seul.

Sinon, vous pourriez probablement configurer une directive globale Alias ??dans votre configuration Apache qui s'appliquerait à tous les hôtes virtuels et pointer sur un fichier robots.txt restrictif

Essayez utiliser Apache pour arrêter les robots malveillants . Vous pouvez obtenir les agents d'utilisateurs en ligne ou simplement autoriser les navigateurs, plutôt que d'essayer de bloquer tous les robots. / p>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top