59

Nginx + PHP(fastCGI上)は私にとって素晴らしい働きをします。存在しないPHPファイルへのパスを入力すると、デフォルトの404エラーページ(無効な.htmlファイルに表示されます)が表示される代わりに、「入力ファイルが指定されていません」というメッセージが表示されます。

この404エラーページをカスタマイズするにはどうすればよいですか?

4

5 に答える 5

122

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 をグーグルで検索できます。

于 2009-07-07T15:55:25.100 に答える
49

nginx configで error_page プロパティを使用します。

たとえば、404 エラー ページを に設定する場合は/404.html

error_page 404 /404.html;

500 エラー ページを/500.html次のように簡単に設定できます。

error_page 500 /500.html;
于 2009-06-21T18:49:01.447 に答える
29

「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;
         }
于 2011-05-09T15:32:55.260 に答える
17

このコンテキストtry_filesよりも高速に動作するため、これらの回答は推奨されなくなりました。ファイルが存在するかどうかをテストするには、php ロケーション ブロックをif追加するだけです。存在しない場合は 404 を返します。try_files

location ~ \.php {
    try_files $uri =404;
    ...
}
于 2012-08-02T21:11:33.870 に答える