4
0

More than 3 years have passed since last update.

Nginx returnディレクティブ

Last updated at Posted at 2020-12-13

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ソフトウェア開発ブログ

301 Moved Permanently - HTTP | MDN

HTTP レスポンスステータスコード - HTTP | MDN

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0