次のNginxコードを実装しました。
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;
}
.php
拡張機能の削除に成功しましたが、ページには.php
拡張機能も読み込まれます。たとえば、http://example.com/pages/page.php
とhttp://example.com/pages/page
の両方が機能します。
ページが.php
拡張子なしでのみ読み込まれるように私を助けてください。
location ~ \.php$ {
try_files $uri =404;
}
この設定は/pages/page.php
と一致します。この場合、$uri
(try_files
の最初の引数)は/pages/page.php
です。したがって、このファイルが存在する場合、nginxはファイルの内容を返します。
.php
拡張子を持つリクエストに対して404を返したい場合は、次の設定が正しいです。
location ~ \.php$ {
return 404;
}