«Masquer» les extensions de fichier .html à l'aide de réécritures nginx


16

J'utilise un site statique via nginx, et mon objectif est de remplacer les URL qui ressemblent à:

http://foo.com/bar.html

avec

http://foo.com/bar

La clé étant l'absence de barre oblique. Je fais actuellement quelque chose de similaire en utilisant des alias d'emplacement, mais cela est fastidieux car cela nécessite un bloc d'emplacement pour chaque fichier, et il ajoute également une barre oblique car nginx regarde les alias comme des répertoires:

    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;
    }

Etc. J'ai lu la documentation sur les réécritures, et je n'arrive pas à synthétiser ce qui est dit dans ce que j'ai besoin de faire. Je ne viens pas d'un milieu Apache; nginx est ma première incursion sur les serveurs Web, donc je suis sûr que je manque quelque chose d'évident car mon arrière-plan HTTP est faible. Merci d'avance pour toute aide que vous pouvez fournir.

Réponses:



5

Selon le commentaire de @Khaja, la meilleure réponse est:

try_files $uri.html $uri/ =404;

Pour qu'une seule copie de la ressource soit servie (celle sans extension .html). Vous ne voulez pas diviser la force de votre lien sur plusieurs URL diffusant du contenu en double. Trouvez la documentation ici .


J'ai essayé ça. try_files $ uri.html $ uri / = 404; il a cassé le chargement de la page d'accueil sans nommer myurl / index a également cassé le chargement de .css, .js etc.
aspiringGuru
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.