Tenemos una configuración de servidor web de desarrollo Apache XAMPP con hosts virtuales y queremos evitar que los serps rastreen todos nuestros sitios. Esto se hace fácilmente con un archivo robots.txt. Sin embargo, preferimos no incluir un archivo robots.txt de rechazo en cada vhost y luego tener que eliminarlo cuando se active el sitio en otro servidor.
¿Hay alguna manera con un archivo de configuración de apache para reescribir todas las solicitudes a robots.txt en todos los vhosts en un solo archivo robots.txt?
Si es así, ¿podrías darme un ejemplo? Creo que sería algo como esto:
RewriteEngine On
RewriteRule .*robots\.txt$ C:\xampp\vhosts\override-robots.txt [L]
¡Gracias!
apache-2.2
php
robots.txt
Michael Berkompas
fuente
fuente
Respuestas:
Apache mod_alias está diseñado para esto y está disponible desde el núcleo del sistema Apache, y se puede configurar en un lugar sin casi sobrecarga de procesamiento, a diferencia de mod_rewrite.
Con esa línea en el archivo apache2.conf, fuera de todos los vhost, http://example.com/robots.txt , en cualquier sitio web al que sirve, generará el archivo dado.
fuente
Alias
en cada<VirtualHost>
bloque. +1.<Location "/robots.txt"> Allow from all </Location>
inmediatamente después, dentro del archivo principal<IfModule alias_module>
Coloque su
robots.txt
archivo global común en algún lugar del sistema de archivos de su servidor que sea accesible para el proceso de apache. Por el bien de la ilustración, supondré que está en/srv/robots.txt
.Luego, para configurar el
mod_rewrite
servicio de ese archivo a los clientes que lo soliciten, coloque las siguientes reglas en el<VirtualHost>
bloque de configuración de cada vhost :Si coloca las reglas de reescritura en
.htaccess
archivos por directorio en lugar de<VirtualHost>
bloques, deberá modificar las reglas ligeramente:fuente
mod_rewrite
truco demasiado complicado . Utilice en suAlias
lugar, como lo sugiere Alister.No estoy seguro de si está ejecutando XAMPP en Linux o no, pero si lo está, podría crear un enlace simbólico de todos los hosts virtuales al mismo archivo robots.txt, pero debe asegurarse de que su configuración de Apache para cada host virtual sea permitido seguir enlaces simbólicos (bajo las
<Directory>
directivasOptions FollowSymLinks
).fuente
Enfoque diferente a la solución.
Alojo múltiples host virtuales (más de 300) en mi entorno de clúster. Para proteger a mis servidores de ser golpeados por rastreadores, defino Crawl-delay por 10 segundos.
Sin embargo, no puedo hacer cumplir a todos mis clientes con una configuración fija de robots.txt. Dejo que mis clientes usen su propio archivo robots.txt si lo desean.
El módulo de reescritura primero verifica si el archivo existe. Si no existe, los módulos se reescriben a mi configuración predeterminada. Ejemplo de código a continuación ...
Para mantener la reescritura interna, se debe usar un alias. En lugar de definir un nuevo alias que pueda causar algunos conflictos del lado del usuario, ubiqué mi robots.txt dentro de la carpeta / APACHE / error / que ya tiene un alias como configuración predeterminada.
fuente