Saltar al contenido

nginx: reescribe la regla para eliminar /index.html de $ request_uri

Solución:

Utilizo la siguiente reescritura en la cláusula del servidor de nivel superior:

rewrite ^(.*)/index.html$ $1 permanent;

Usar esto solo funciona para la mayoría de las URL, como http://foo.com/bar/index.html, pero se rompe http://foo.com/index.html. Para resolver esto, tengo la siguiente regla adicional:

location = /index.html {
  rewrite  ^ / permanent;
  try_files /index.html =404;
}

los =404 part devuelve un error 404 cuando no se encuentra el archivo.

No tengo idea de por qué la primera reescritura por sí sola no es suficiente.

La siguiente configuración me permitió redirigir /index.html para / y /subdir/index.html para /subdir/:

# Strip "index.html" (for canonicalization)
if ( $request_uri ~ "/index.html" ) {
    rewrite ^(.*)/ $1/ permanent;
}

Este funciona:

# redirect dumb search engines
location /index.html {
    if ($request_uri = /index.html) {
        rewrite ^ $scheme://$host? permanent;
    }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *