returnディレクティブ
役割 | 詳細 |
---|---|
構文 | return code[text]; return code URL; return URL; |
デフォルト | - |
コンテキスト | server, location, if |
処理を停止し、指定されたcodeをクライアントに返します。非標準のコード 444 は応答ヘッダを送信せずに接続を閉じます。
バージョン 0.8.42から、リダイレクトURL(コード 301, 302, 303, 307 および 308)か応答ボディtext (その他のコード) のどちらかを指定することができます。
応答ボディテキストとリダイレクトURLには変数を含むことができます。
特別な場合として、リダイレクトURLはこのサーバへのローカルなURLとして指定することができます。
この場合、完全なリダイレクトURLはリクエストスキーム($scheme) と server_name_in_redirect とport_in_redirectディレクティブに応じて形成されます。
更に、コード302の一時リダイレクトのURLを単独のパラメータとして指定することができます。
そのようなパラメータは"http://", "https://" または"$scheme"文字列から始まらなければいけません。URLには変数を含むことができます。
リダイレクトのステータスコード
コード | 意味 | 詳細 |
---|---|---|
301 | Moved Permanently | URLが新しいURLへ永久的に変更されたことを表します。古いURLを保持しているクライアントは、以後新しいURLのみを使用します。 サイトリニューアルでURLが変更になった場合とか、本来アクセスされるURLとは異なるURLへのアクセスを制御させたい時とかに使います。 |
302 | Found | 一時的に別のURLへ遷移させたい時に使用します。リダイレクト先は一時的なURLのため、古いURLを保持しているクライアントはこの後も古いURLを保持し続けます。 たとえばサーバーエラーが発生したときにエラーページへリダイレクトする場合とかに使います。最も広く使われるリダイレクトのステータスコード。 |
303 | See Other | 新しいURLにGETメソッドでアクセスすることが決められたリダイレクトです。フォームからPOSTした後にリダイレクトしてTOPページへ戻す、というような遷移で使います。HTTP/1.1から導入されました。 |
307 | Temporary Redirect | 一時的に別のURLへ遷移させたい時に使用します。302とよく似ているけど、リダイレクト前と同一メソッドでリダイレクト先へもアクセスを行うところが異なります。 用途があまり思い浮かばないけど、たとえば主系・幅系と2系統で展開しているサイトで、サーバーにトラブルが発生したら、もう片方にリダイレクトして処理を続行させる場合などに使用します。HTTP/1.1から導入されました。 |
308 | Permanent Redirect | リクエストされたリソースが Location ヘッダーで示された URL へ完全に移動したことを示します。ブラウザーはこのページにリダイレクトし、検索エンジンはリソースへのリンクを更新します。 301 の場合は不正に GET メソッドに変更される可能性があるのに対し、このコードの場合はリクエストメソッドと本文が変更されません。 |
使用例
return 301 https://$host$request_uri;
参考
ngx_http_rewrite_module モジュール 日本語訳
HTTPリダイレクト4種類の違いとは?│HTTP│Webサイト開発│SYMMETRICソフトウェア開発ブログ