HTTP Status Code 301
使用ケース
301 Moved Permanentlyは、恒久的にURLが移転された際、その新しいURLへのリダイレクトとして使用されます。
サイトが全く異なるURLに移転したケースはもちろん、SSL化してhttpからhttpsに変更された際にも使用します。
また、SEOの観点からURLを統一する(正規化)際にも使用します。
URLにwww有り・無しどちらでもアクセスできる状態だとすると、検索エンジンの評価が集約されません。
www以外にも、index.htmlの有り・無し、パラメータの有り・無しも考慮する必要があります。
URLの正規化を行う際には、301リダイレクトさせる記述をしたhtaccessファイルをサーバーにアップロードします。
動作
クライアントが移転元のURLへのGETをサーバーにリクエスト
サーバーはクライアントへ301をレスポンス
クライアントは移転先のURL(HeaderのLocationに記載)へのGETをサーバーにリクエスト
サーバーはクライアントへ200 Successをレスポンス
補足
POSTリクエストに対して301が返却されると、メソッドがGETに変更されます。
URLの正規化を設定をした場合に注意が必要です。
その設定に合わせていないviewやroutingは301を通してリダイレクトされます。
意図せずPOSTがGETに変わってしまい、データが送られません。
また、一度サーバーから301のレスポンスを受け取ると、
次回からは移転元のURLにアクセスしようとしても、サーバーへのリクエストを行わず、
クライアントは移転先のURLをリクエストを行います(キャッシュが削除されない限り)。
新人コーダーに知っておいて欲しいリダイレクトの基本|クロノドライブ