Nginx + PHP(fastCGI上)は私にとって素晴らしい働きをします。存在しないPHPファイルへのパスを入力すると、デフォルトの404エラーページ(無効な.htmlファイルに表示されます)が表示される代わりに、「入力ファイルが指定されていません」というメッセージが表示されます。
この404エラーページをカスタマイズするにはどうすればよいですか?
Nginx + PHP(fastCGI上)は私にとって素晴らしい働きをします。存在しないPHPファイルへのパスを入力すると、デフォルトの404エラーページ(無効な.htmlファイルに表示されます)が表示される代わりに、「入力ファイルが指定されていません」というメッセージが表示されます。
この404エラーページをカスタマイズするにはどうすればよいですか?
nginx.conf 内のロケーション ブロックごとにカスタム エラー ページを設定するか、サイト全体のグローバル エラー ページを設定できます。
特定の場所の単純な 404 not found ページにリダイレクトするには:
location /my_blog {
error_page 404 /blog_article_not_found.html;
}
サイト全体の 404 ページ:
server {
listen 80;
error_page 404 /website_page_not_found.html;
...
標準エラー コードを一緒に追加して、複数の種類のエラーを 1 つのページにまとめることができます。
location /my_blog {
error_page 500 502 503 504 /server_error.html
}
http セクションで定義された server2 という名前のアップストリーム サーバーがあると仮定して、まったく別のサーバーにリダイレクトするには:
upstream server2 {
server 10.0.0.1:80;
}
server {
location /my_blog {
error_page 404 @try_server2;
}
location @try_server2 {
proxy_pass http://server2;
}
マニュアルに詳細が記載されているか、ウェブ上の実際の例については、用語 nginx.conf および error_page をグーグルで検索できます。
nginx configで error_page プロパティを使用します。
たとえば、404 エラー ページを に設定する場合は/404.html
、
error_page 404 /404.html;
500 エラー ページを/500.html
次のように簡単に設定できます。
error_page 500 /500.html;
「error_page」パラメーターはリダイレクトを作成し、リクエスト メソッドを「GET」に変換します。これはカスタム レスポンス ページではありません。
最も簡単な解決策は
server{
root /var/www/html;
location ~ \.php {
if (!-f $document_root/$fastcgi_script_name){
return 404;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params.default;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
ちなみに、Nginx で PHP スクリプトから返された 404 ステータスを処理する場合は、次のように追加する必要があります。
[fastcgi_intercept_errors][1] on;
例えば
location ~ \.php {
#...
error_page 404 404.html;
fastcgi_intercept_errors on;
}
このコンテキストtry_files
よりも高速に動作するため、これらの回答は推奨されなくなりました。ファイルが存在するかどうかをテストするには、php ロケーション ブロックをif
追加するだけです。存在しない場合は 404 を返します。try_files
location ~ \.php {
try_files $uri =404;
...
}