Pregunta

Tengo una especie de servidor de pruebas en Internet público que ejecuta 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 modificar mi httpd.conf en el servidor de pruebas para bloquear los rastreadores de los motores de búsqueda?

Cambiar el archivo robots.txt realmente no funcionaría, ya que uso scripts para copiar la misma base de código en ambos servidores. Además, preferiría no cambiar los archivos de configuración del host virtual, ya que hay un montón de sitios y no quiero tener que recordar copiar una configuración determinada si hago un nuevo sitio.

¿Fue útil?

Solución

Cree un archivo robots.txt con el siguiente contenido:

User-agent: *
Disallow: /

Coloque ese archivo en algún lugar de su servidor de pruebas; la raíz de tu directorio es un gran lugar para ella (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 ahora se servirá 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 cosa que la respuesta de ceejayoz sugiere que lo haga, pero tuve que dedicar unos minutos adicionales a descubrir todos los detalles para que funcione. Decidí poner esta respuesta aquí para el por el bien de otros que podrían tropezar con esta pregunta.)

Otros consejos

Puedes usar el mod_rewrite de Apache para hacerlo. Supongamos que su verdadero servidor es www.example.com y su servidor de almacenamiento provisional es staging.example.com. Cree un archivo llamado 'robots-staging.txt' y reescriba condicionalmente la solicitud para ir a ese archivo.

Este ejemplo sería adecuado para proteger un solo sitio de preparación, un caso de uso un poco más simple de lo que está solicitando, pero esto ha funcionado de manera confiable para mí:

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

Puede intentar 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 obtener algo que no sea un " 200 OK " o " 404 no encontrado " devuelva el código de la solicitud HTTP y es posible que no lean la URL redirigida.

Así es como harías eso:

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

¿Podría crear un alias robots.txt en los servidores virtuales intermedios a un robots.txt restrictivo alojado en una ubicación diferente?

Para realmente evitar que las páginas se indexen, deberá ocultar los sitios detrás de Autenticación HTTP . Puede hacer esto en su configuración global de Apache y usar un simple archivo .htpasswd.

El único inconveniente de esto es que ahora tiene que escribir un nombre de usuario / contraseña la primera vez que navegue por las páginas del servidor de pruebas.

Dependiendo de su escenario de implementación, debe buscar formas de implementar diferentes archivos robots.txt en dev / stage / test / prod (o cualquier combinación que tenga). Suponiendo que tenga diferentes archivos de configuración de la base de datos o (o lo que sea análogo) en los diferentes servidores, esto debería seguir un proceso similar (usted tiene tiene contraseñas diferentes para sus bases de datos, ¿verdad?)

Si no tiene implementado un proceso de implementación de un solo paso, probablemente sea una buena motivación para conseguir uno ... hay un montón de herramientas para diferentes entornos. Capistrano es una muy buena, y está a favor de El mundo de Rails / Django, pero de ninguna manera es el único.

Si falla todo eso, es probable que pueda configurar una directiva de alias global en su configuración de Apache que se aplique a todos los hosts virtuales y que apunte a un archivo robots.txt restrictivo

Pruebe Uso de Apache para detener los robots malos . Puede obtener los agentes de usuario en línea o simplemente permitir los navegadores, en lugar de intentar bloquear todos los bots.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top