要求された .php ファイルが見つからない場合は、try_files を使用して指定された .php ファイルにリダイレクトしますか?

要求された .php ファイルが見つからない場合は、try_files を使用して指定された .php ファイルにリダイレクトしますか?

nginx を使用して、必要な .php ファイルが見つからない場合に try_files を使用して /redirect.php にリダイレクトしたいのですが、これは正しい方法でしょうか。

location ~ \.php$ {
...
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $uri /redirect.php =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
}

しかし、うまくいかないようです。

答え1

location \.php$拡張子で終わるすべてのリクエストが.phpこのブロックによって処理されることを意味します。

try_files間違った場所にあります。既存のlocation /ブロックの下またはブロックに配置する必要がありますserver

答え2

これは私たちが使用しているものですスリックスタック存在しない.phpリクエストをエラー処理(および 301 リダイレクト管理)のために WordPress にリダイレクトするには、次のようにします。

location ~* \.php$ {
    include /etc/nginx/fastcgi.conf;
    try_files $uri $uri/ /index.php?$args; ## send .php requests to WordPress if not found
...
}

多くの回答が出回っていますが、ここで PHP-FPM ルーティングにfastcgi_intercept_errors on;使用する場合はその必要はありません。try_files

参照:https://github.com/littlebizzy/slickstack/edit/master/modules/nginx/sites/production.txt

関連情報