"Ocultar" .html extensiones de archivo usando nginx reescribe


16

Estoy sirviendo un sitio estático a través de nginx, y mi objetivo es reemplazar las URL que se ven así:

http://foo.com/bar.html

con

http://foo.com/bar

La clave no es una barra inclinada final. Actualmente estoy haciendo algo similar usando alias de ubicación, pero esto es tedioso porque requiere un bloque de ubicación para cada archivo, y también agrega una barra diagonal ya que nginx mira los alias como directorios:

    location / {
        root    /srv/www/foo/public_html;
        index   index.html;
    }

    location /bar1 {
        alias /srv/www/foo/public_html/;
        index bar1.html;
    }

    location /bar2 {
        alias /srv/www/foo/public_html/;
        index bar2.html;
    }

Y así. He leído la documentación sobre reescrituras, y parece que no puedo sintetizar lo que se dice sobre lo que necesito que haga. No voy a venir de un fondo Apache; nginx es mi primera incursión en los servidores web, así que estoy seguro de que me falta algo obvio ya que mi fondo HTTP es débil. Gracias de antemano por cualquier ayuda que pueda proporcionar.

Respuestas:



5

Según el comentario de @Khaja, la mejor respuesta es:

try_files $uri.html $uri/ =404;

Para que solo se sirva una copia del recurso (sin extensión .html). No desea dividir la fuerza de su enlace en varias URL que sirven contenido duplicado. Encuentra la documentación aquí .


Intenté esto try_files $ uri.html $ uri / = 404; se rompió carga de página sin nominar myurl / índice también carga la quiebra de css, js, etc
aspiringGuru
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.