publico - ¿Puedo bloquear los rastreadores de búsqueda para cada sitio en un servidor web Apache?
httpd.conf ubuntu (6)
Tengo un poco de un servidor de puesta en escena en Internet público ejecutando copias del código de producción para algunos sitios web. Realmente no me gustaría si los sitios de ensayo se indexan.
¿Hay alguna manera de que pueda modificar mi httpd.conf en el servidor intermedio para bloquear los rastreadores del motor de búsqueda?
Cambiar el archivo robots.txt no funcionaría realmente, ya que utilizo scripts para copiar el mismo código base en ambos servidores. Además, preferiría no cambiar los archivos conf de host virtual, ya que hay un montón de sitios y no quiero tener que recordar copiar una determinada configuración si hago un sitio nuevo.
¿Podría alias el robots.txt en la puesta en escena de los hosts virtuales en un archivo robots.txt restrictivo alojado en una ubicación diferente?
Crea un archivo robots.txt con los siguientes contenidos:
User-agent: *
Disallow: /
Coloque ese archivo en algún lugar de su servidor de transición; su raíz de directorio es un excelente lugar para ello (por ejemplo, /var/www/html/robots.txt
).
Agregue lo siguiente a su archivo httpd.conf:
# Exclude all robots
<Location "/robots.txt">
SetHandler None
</Location>
Alias /robots.txt /path/to/robots.txt
La directiva SetHandler
probablemente no sea necesaria, pero podría ser necesaria si está utilizando un controlador como mod_python, por ejemplo.
Ese archivo robots.txt se servirá ahora para todos los hosts virtuales en su servidor, anulando cualquier archivo robots.txt que pueda tener para hosts individuales.
(Nota: mi respuesta es esencialmente la misma que sugiere la respuesta de ceejayoz, pero tuve que dedicar unos minutos adicionales a descifrar todos los detalles para que funcione. Decidí poner esta respuesta aquí por el bien de los demás. quien podría tropezar con esta pregunta.)
Dependiendo de su escenario de implementación, debe buscar formas de implementar diferentes archivos robots.txt en dev / stage / test / prod (o la combinación que tenga). Suponiendo que tiene diferentes archivos de configuración de base de datos o (o lo que sea análogo) en los diferentes servidores, esto debería seguir un proceso similar (usted tiene contraseñas diferentes para sus bases de datos, ¿no?)
Si no cuenta con un proceso de implementación en un solo paso, esta es probablemente una buena motivación para obtener uno ... hay toneladas de herramientas disponibles para diferentes entornos: Capistrano es bastante bueno y se lo prefiere en los Rails / Mundo Django, pero de ninguna manera es el único.
Si esto falla, probablemente puedas configurar una directiva Alias global en tu configuración de Apache que se aplique a todos los hosts virtuales y apuntar a un robots.txt restrictivo.
Para evitar que las páginas se indexen, deberá ocultar los sitios detrás de la autenticación HTTP . Puede hacer esto en su configuración global de Apache y usar un archivo .htpasswd simple.
La única desventaja de esto es que ahora debe ingresar un nombre de usuario / contraseña la primera vez que navega a cualquier página en el servidor intermedio.
Pruebe usar Apache para detener los robots malos . Puede obtener los agentes de usuario en línea o simplemente permitir navegadores, en lugar de tratar de bloquear todos los bots.
Puedes usar mod_rewrite de Apache para hacerlo. Supongamos que su host real es www.example.com y su host intermedio es de etapas.ejemplo.com. Cree un archivo llamado ''robots-staging.txt'' y reescriba condicionalmente la solicitud para ir a eso.
Este ejemplo sería adecuado para proteger un solo sitio de ensayo, un caso de uso más simple que el que está solicitando, pero esto me ha funcionado de manera confiable:
<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>
Podría tratar de redirigir las arañas a un archivo robots.txt maestro en un servidor diferente, pero algunas de las arañas pueden resistirse después de que obtengan algo que no sea un código de retorno "200 OK" o "404 no encontrado" de la solicitud HTTP, y es posible que no lean la URL redirigida.
Así es como lo harías:
<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>