wake-up-neo.net

Nginx-Überschreibproblem - Anzeige derselben Seite mit oder ohne .php-Erweiterung nach dem Überschreiben

Ich habe den folgenden Nginx-Code implementiert:

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

Es ist erfolgreich, die Erweiterung .php zu entfernen, aber die Seite wird auch mit der Erweiterung .php geladen. Beispielsweise funktionieren sowohl http://example.com/pages/page.php als auch http://example.com/pages/page.

Bitte helfen Sie mir, dass die Seite nur ohne die Erweiterung .php geladen wird.

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

Diese Konfiguration entspricht /pages/page.php. In diesem Fall ist $uri (das erste Argument von try_files) /pages/page.php. Wenn diese Datei existiert, gibt nginx den Inhalt der Datei zurück.

Wenn Sie 404 für Anforderungen mit der Erweiterung .php zurückgeben möchten, ist die folgende Einstellung korrekt.

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