web-dev-qa-db-ja.com

Nginx書き換え問題-書き換え後に.php拡張子の有無にかかわらず同じページを表示する

次の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.phphttp://example.com/pages/pageの両方が機能します。

ページが.php拡張子なしでのみ読み込まれるように私を助けてください。

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

この設定は/pages/page.phpと一致します。この場合、$uritry_filesの最初の引数)は/pages/page.phpです。したがって、このファイルが存在する場合、nginxはファイルの内容を返します。

.php拡張子を持つリクエストに対して404を返したい場合は、次の設定が正しいです。

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