2016-12-25 18 views
0

'error_page'ディレクティブをNginx configファイルに使用すると、引数を渡したいと思っています。Nginx error_page指示文:引数を渡すことはできますか?

私は'err.html'にJavaScriptを使用して応答ステータスコードを処理させました。しかし、以下は全く機能しません。

error_page  
400 401 402 403 404 500 502 503 504 = /err.html?$status; 

'error_page'指示文を使用すると、応答ステータスコード(または他の引数)を渡す方法はありますか?

+0

http://nginx.org/ja/docs/http/ngx_http_core_module.html#error_page「uri値には変数を含めることができます。」 –

答えて

0

これは間違った考えです。 error_pageを使用してエラーが発生した場合、nginxはurlを返しませんが、代わりに内部リダイレクトを行い、送信して代替応答を送ります。

これを達成するために、現在、私は2つの方法、

  1. 複数error_pages異なるエラーコードの、およびそれらのページへの事前コード のjavascriptと考えることができます。

    error_page 404 err404.html; 
    
    error_page 403 err403.html; 
    ... 
    

これは少し長いようです。

  • 内部は、いくつかのカスタム場所ブロックにリダイレクトし、それに応答してヘッダ を加えます。
  • error_page 404 405 .../custom_error $ status;

    location ~ /custom_error(.*) { 
        add_header Error-Code $1; 
        try_files /err.html.html 404; 
    } 
    

    P.上記のコードはテストされていません。

    1

    (私はこの答えを書き直し)

    問題は、内部リダイレクトと外部リダイレクトの私の混乱によって引き起こされました。以下はうまくいく。私はクライアント側のJavaScriptは、クエリ文字列を通過した応答ステータスコードを扱うようにしたい場合はSatysが言うように、私は別の方法を試してみてください、

    error_page 400 401 402 403 404 500 502 503 504 /err.php?$status; 
    

    を(「err.phpは」適切にクエリ文字列を扱うことを想定)。そして私は方法を見つけることができた。

    error_page 400 402 403 404 500 502 503 504 @err; 
    
    location @err { 
        rewrite ^.*$ /err.html?$status redirect; 
    } 
    

    あなたのアドバイスをいただきありがとうございます。

    関連する問題