web-dev-qa-db-fra.com

Nginx rewrite problem - affichage de la même page avec ou sans extension .php après réécriture

J'ai implémenté le code Nginx suivant:

location / {
    try_files $uri $uri.php $uri/ @extensionless-php;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    try_files $uri =404;
}

location @extensionless-php {
    rewrite ^(.*)$ $1.php last;
}

La suppression de l'extension .php a réussi, mais la page est également chargée avec l'extension .php. Par exemple, http://example.com/pages/page.php et http://example.com/pages/page fonctionnent.

Aidez-moi à faire en sorte que la page ne se charge que sans l'extension .php.

4
Pal
location ~ \.php$ {
    try_files $uri =404;
}

Cette configuration correspond à /pages/page.php. Dans ce cas, $uri (le premier argument de try_files) est /pages/page.php. Par conséquent, si ce fichier existe, nginx en renvoie le contenu.

Si vous souhaitez renvoyer 404 pour toute demande portant l’extension .php, le réglage suivant est correct.

location ~ \.php$ {
    return 404;
}
1
set0gut1