¿Cómo configuro nginx para redirigir a una url para robots.txt & sitemap.xml?
(6)
Creo que quieres configurar una ubicación. La parte clave es la directiva "=".
location = /robots.txt {
alias /your_full_path/robots.txt ;
}
(Cuando no incluí el =, todavía iba a la ubicación predeterminada de la raíz nginx)
Si se configura de la siguiente manera, todas las solicitudes de /robots.txt* se leerán en / var / foo. Entonces, /robots.txt.bing intenta leer /var/foo/robots.txt.bing fuera del disco. El "^ ~" indica que es una coincidencia de expresión regular al principio de la solicitud.
location ^~ /robots.txt {
root /var/foo;
}
Estoy ejecutando nginx 0.6.32 como una interfaz de usuario para couchdb. Tengo mi robots.txt en la base de datos, accesible en http://www.example.com/prod/_design/mydesign/robots.txt . También tengo mi sitemap.xml que se genera dinámicamente, en una url similar.
He intentado la siguiente configuración:
server {
listen 80;
server_name example.com;
location / {
if ($request_method = DELETE) {
return 444;
}
if ($request_uri ~* "^/robots.txt") {
rewrite ^/robots.txt http://www.example.com/prod/_design/mydesign/robots.txt permanent;
}
proxy-pass http://localhost:5984;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Esto parece funcionar como una redirección, pero ¿hay una forma más simple?
Esto debería funcionar también, y puede funcionar un poco mejor.
location /robots.txt { alias /var/www/django/mysite/static/robots.txt; }
O puede ponerlo simplemente en su propia ubicación -
location /robots.txt {
alias /Directory-containing-robots-file/robots.txt;
}
Tenga en cuenta que el primer parámetro es una expresión regular, por lo que probablemente debería escapar. y emparejar el final de la línea.
location / {
rewrite ^/robots/.txt$ /static/robots.txt last;
...
}
Teniendo en cuenta que robots.txt
se encuentra en /var/www/mysite/static/robots.txt
, lo siguiente funcionó para mí:
location = /robots.txt {
root /var/www/mysite/static/;
}
reescribir con http: // ... está habilitado para hacer la redirección. Probablemente estés buscando:
rewrite ^/robots.txt /prod/_design/mydesign/robots.txt last;