django - indexado - Nginx: diferentes robots.txt para el dominio alternte
se ha indexado aunque un archivo robots.txt la ha bloqueado (1)
Puede usar el map
para definir una variable condicional. Agregue esto fuera de su directiva de servidor:
map $host $robots_file {
default robots.txt;
internal.example.com internal-robots.txt;
}
Entonces la variable se puede usar con try_files
esta manera:
server_name internal.example.com;
location = /robots.txt {
try_files /$robots_file =404;
}
Ahora puede tener dos archivos robots.txt en su raíz:
robots.txt
internal-robots.txt
Resumen
Tengo una única aplicación web con un dominio interno y externo apuntando hacia ella, y quiero que un archivo robots.txt bloquee todo el acceso al dominio interno, pero permita todo el acceso al dominio externo.
Detalle del problema
Tengo un bloque de servidor Nginx simple que utilicé para una aplicación Django (ver a continuación). Como puede ver, este bloque de servidor responde a cualquier dominio (debido a la falta del parámetro server_name). Sin embargo, me pregunto cómo marcar dominios específicos, ya que Nginx les mostrará un archivo robots.txt personalizado.
Más específicamente, supongamos que los dominios example.com y www.example.com mostrarán un archivo robots.txt predeterminado en el directorio htdocs. (Dado que "root / sites / mysite / htdocs" está configurado y un archivo robots.txt se encuentra en /sites/mysite/htdocs/robots.txt)
PERO, también quiero que el dominio "example.internal.com" (que se refiere al mismo servidor que example.com) tenga un archivo robots.txt personalizado servido; Me gustaría crear un robots.txt personalizado para que google no indexe ese dominio interno.
Pensé en duplicar el bloque del servidor y especificar lo siguiente en uno de los bloques del servidor. Y de alguna manera anulando la búsqueda de robots.txt en ese bloque de servidor.
"server_name internal.example.com;"
Pero duplicar todo el bloque de servidores solo para este propósito no parece muy SECO.
También pensé en utilizar una declaración if para verificar y ver si el encabezado del host contiene el dominio interno. Y luego, se sirve el archivo robots.txt personalizado de esa manera. Pero Nginx dice If Is Evil .
¿Cuál es un buen enfoque para servir un archivo robots.txt personalizado para un dominio interno?
Gracias por tu ayuda.
Aquí hay un ejemplo de código del bloque de servidor que estoy usando.
upstream app_server {
server unix:/sites/mysite/var/run/wsgi.socket fail_timeout=0;
}
server {
listen 80;
root /sites/mysite/htdocs;
location / {
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}