301 と 302 リダイレクトの違いと短縮 URL での使い分け
URL を開いたら別の URL に移動していた、という経験は誰にでもあります。これはリダイレクトという仕組みによるものです。リダイレクトには種類があり、代表的なものが 301 と 302 です。違いを知らずに設定すると、検索結果に古い URL が残り続けたり、リンク先を変えたのに古いページが表示されたりします。
この記事では、リダイレクトの基本から 301 と 302 の違い、検索エンジンとブラウザでの扱い、短縮 URL とサイト移転での使い分けまでを説明します。
リダイレクトとは
リダイレクトは、ある URL にアクセスした人を、別の URL へ自動的に移動させる仕組みです。ブラウザがサーバーに要求を送ると、サーバーは「このページはここにあります」という応答を返します。ブラウザはその指示に従って、新しい URL へ改めて要求を送ります。
この応答には、ステータスコードと呼ばれる 3 桁の数字が付いています。3 で始まる数字がリダイレクトを表し、同時に移動先の URL が Location ヘッダーで伝えられます。
リダイレクトが使われる場面
- 古い URL から新しい URL への引っ越し。
http://からhttps://への統一。wwwあり・なしの統一。- 短縮 URL から元の長い URL への転送。
- キャンペーンごとに、期間限定のページへ誘導する。
短縮 URL の仕組みそのものがリダイレクトです。詳しい流れは短縮 URL の仕組みの記事で説明しています。
301 と 302 の違い
2 つの違いは、移動が恒久的か一時的かという点です。
| ステータスコード | 意味 | 想定する状況 |
|---|---|---|
| 301 | 恒久的な移動(Moved Permanently) | 引っ越しが完了し、元に戻さない |
| 302 | 一時的な移動(Found) | 一時的に別の場所へ案内する |
| 307 | 一時的な移動(Temporary Redirect) | 302 と同様。要求メソッドを変えない |
| 308 | 恒久的な移動(Permanent Redirect) | 301 と同様。要求メソッドを変えない |
307 と 308 は、POST などの要求メソッドを維持したまま転送する場合に使われます。ふだんのページ表示(GET)では、301 と 308、302 と 307 を同じ意味合いで考えて問題ありません。
「恒久」と「一時」の判断基準
恒久か一時かは、元の URL を今後使うかどうかで決めます。
- 元の URL を二度と使わない、または使うとしても長期間先なら 301。
- 一時的な告知、メンテナンス、期間限定の案内、A/B テストなら 302。
- 後で転送先を頻繁に変える予定があるなら 302。
「あとで戻すかもしれない」と少しでも考えるなら、302 を選ぶほうが安全です。
検索エンジンでの扱い
Google 検索セントラルのドキュメントでは、リダイレクトを恒久的なものと一時的なものに分けて説明しています。恒久的なリダイレクトは、新しい URL を検索結果に表示してほしいという合図です。一時的なリダイレクトでは、元の URL が検索結果に残りやすくなります。ただし、ほかの手がかりから転送先がインデックスされることもあります。詳細はGoogle 検索セントラルのリダイレクトに関する説明を参照してください。
実務上の目安は次のとおりです。
- サイトの引っ越しでは 301 を使い、新しい URL に評価を引き継ぎたいと伝える。
- 一時的な転送に 302 を使えば、元の URL が検索結果に残る。
- 長期間 302 を続けても、検索エンジンは状況に応じて恒久的な移動と解釈することがある。
サーバー側で返すリダイレクト(301・302 など)は、最も確実に解釈されます。JavaScript で行う転送は、ページが正しく描画されないと検出されないことがあるため、避けるのが無難です。
「評価の引き継ぎ」の考え方
301 にすれば順位が自動で保たれる、とは限りません。URL が変わると、検索エンジンが新しい URL を認識して整理するまで、順位が一時的に動くことがあります。内容がほぼ同じページ同士を 1 対 1 で転送するのが基本です。関係の薄いページへまとめて転送すると、期待した効果が得られません。
ブラウザのキャッシュの影響
実運用で見落とされやすいのが、ブラウザが 301 を記憶する点です。301 は恒久的な移動と解釈されるため、ブラウザは転送先を保存し、次回以降はサーバーに問い合わせず直接移動することがあります。
転送先を変えても古いページが開く
301 で設定した短縮 URL の転送先を後から変えても、一度アクセスしたブラウザは古い転送先へ行き続ける場合があります。シークレットウィンドウや別の端末で見ると新しい転送先に行くため、原因が分かりにくくなります。
この現象を避けるには、次のようにします。
- 転送先を変える可能性があるリンクには 302 を使う。
- 301 を使う場合は、
Cache-Controlヘッダーで保存期間を短くできるか確認する。 - 変更後に確認するときは、キャッシュを削除してから開く。
302 でもブラウザが一定時間保存することはありますが、301 ほど長くは保持されません。保存期間は、サーバーが返す Cache-Control や Expires の指定によって変わります。
短縮 URL ではどちらを使うか
短縮 URL サービスでは、301 と 302 のどちらも使われています。転送先を変えたり、クリックを数えたりする運用では、302 などの一時的なリダイレクトに利点があります。
- 転送先を後から変更しやすい。リンク先の変更をしても、利用者の端末に古い転送先が残りにくい。
- 閲覧のたびにサーバーへ要求が届きやすく、クリック数を数えやすい。
301 を使う場合は、ブラウザがキャッシュすると、2 回目以降のアクセスがサービスのサーバーを通らず、クリック数が実際より少なくなる可能性があります。計測が目的なら、使っているサービスがどちらを返しているか確認してください。
自分で確認する方法
ステータスコードは、ブラウザの開発者ツールのネットワークタブで確認できます。ターミナルでは次のコマンドで、応答ヘッダーだけを見られます。
curl -I https://example.com/short
出力の先頭付近に HTTP/2 302 や location: の行があれば、転送先と種類を確認できます。飛び先を調べたいときは飛び先の確認の記事も参考になります。
サイト移転での使い方
ドメインやディレクトリを変えるサイト移転では、次の手順で 301 を設定します。
- 旧 URL と新 URL の対応表を作る。ページ単位で 1 対 1 に対応させる。
- 旧サイトのサーバー側で、旧 URL に 301 を返す設定を入れる。
- 転送後も、内部リンクや sitemap.xml を新 URL に書き換える。
- ドメインを変える場合は、Google サーチコンソールの「アドレス変更ツール」で旧サイトから手続きする。
- 旧ドメインを維持し、転送を止めない。Google は、できるだけ長く、一般的には少なくとも 1 年間は転送を残すよう案内しています(URL の変更を伴うサイト移転)。
サブドメインへ移す場合は、ドメイン構成の理解が役立ちます。サブドメインの記事も参照してください。
転送でよくある失敗
- 転送が連鎖して、3 回以上の移動を経由する。移動回数が増えると表示が遅くなり、途中で止まる原因になる。
- 転送先が元の URL に戻り、無限ループになる。
- 全ページをトップページへ転送してしまい、利用者が目的のページを見つけられない。
- テスト用の 302 を、そのまま恒久的に残す。
まとめ
301 は恒久的な移動、302 は一時的な移動を表し、検索エンジンとブラウザの扱いが異なります。サイト移転のように元に戻さない場合は 301、転送先を変える可能性があるリンクには 302 が基本です。短縮 URL では、クリック計測や転送先の変更を考えると、302 などの一時的なリダイレクトと相性が良くなります。設定後は、開発者ツールや curl -I で実際のステータスコードを確認してください。
クリックを計測しながら短縮 URL を運用したい場合は、クリック分析やカスタム ID を備えたBoostlinkが使えます。
SNS からの流入を増やすために、運用実績のあるアカウントの購入や M&A を検討する方は、Boostshopも参考にしてください。