Comment supprimer toutes les extensions .html ainsi que toutes les occurrences de index.html d'une chaîne d'URL dans Nginx
http://www.mysite/index.html
à http://www.mysite
http://www.mysite/articles/index.html
à http://www.mysite/articles
http://www.mysite/contact.html
à http://www.mysite/contact
http://www.mysite/foo/bar/index.html
à http://www.mysite/foo/bar
MODIFIER : Voici mon fichier de configuration :
server {
listen 80;
server_name staging.mysite.com;
root /var/www/staging.mysite.com;
index index.html index.htm;
access_log /var/log/nginx/staging.mysite.com.log spiegle;
#error_page 404 /404.html;
#error_page 500 503 /500.html;
rewrite ^(.*/)index\.html$ $1;
rewrite ^(/.+)\.html$ $1;
rewrite ^(.*/)index\.html$ $scheme://$host$1 permanent;
rewrite ^(/.+)\.html$ $scheme://$host$1 permanent;
location / {
rewrite ^/about-us /about permanent
rewrite ^/contact-us /contact permanent;
try_files $uri.html $uri/ /index.html;
}
}
0 votes
Je crois que c'est quelque chose comme
rewrite index.html -;
etrewrite .html$ -;
mais je n'utilise pas nginx, donc je ne suis pas sûr. Espérons que quelqu'un pourra venir et écrire une bonne réponse générique sur "Nginx Rewrite" afin que nous puissions avoir une cible proche. =]0 votes
Le chemin final des directives "try_files" va créer une redirection interne vers le index.html que vous voulez rediriger. Autant que je sache, d'après ce que vous faites, le "chemin" final devrait être défini sur "=404" pour générer une erreur 404 si le fichier n'existe pas. Supprimez le premier bloc de 2 réécritures pour ne garder que les "permanent", puis changez "try_files" en :
try_files $uri.html "${uri}index.html" =404;