301リダイレクト(永久リダイレクト)完全ガイド:SEO影響・実装例・運用の注意点
永久リダイレクト(301)とは
永久リダイレクトとは、主にHTTPプロトコルにおけるステータスコード「301 Moved Permanently」を指し、あるリソースのURLが恒久的に別のURLへ移動したことを示します。クライアント(ブラウザや検索エンジン)は以降、元のURLの代わりに新しいURLを使用するように扱うべきであると通知されます。Webサイト運用では、ドメイン変更、URL正規化(例: 非www→www、http→https)、旧ページから新ページへの移行などで広く用いられます。
技術的な定義(RFC)と挙動
301はRFC 7231(HTTP/1.1)で定義されるリダイレクト系ステータスの一つで、「恒久的に移動した」ことを示します。レスポンスには通常、Locationヘッダに移動先のURLが含まれます。クライアントはLocationを参照して新しいURLにアクセスします。ブラウザや中間プロキシはこの応答をキャッシュすることがあり、キャッシュ条件(Cache-ControlやExpires)に従って扱われます。
SEO(検索エンジン最適化)への影響
永久リダイレクトはSEOにおいて非常に重要です。正しく実装すれば、元URLが獲得していたリンク評価(PageRank的な評価や被リンクの効果)を移転先URLに引き継ぐことが期待できます。検索エンジンは301を受けてインデックスの更新を行い、新しいURLを優先してクロール・インデックスするようになります。
- 恒久的なページ移動やドメイン変更では301を使用することが推奨されます。
- 301は検索エンジンに「恒久的」であることを明確に伝えるため、ランキング信号の移行が期待できますが、移行完了までに時間がかかることがあります。
- 一時的な試験やA/Bテストには302(Found)や307(Temporary Redirect)を用いるべきです。
301 と 302 の違い(要点)
概念的には、301は「恒久的に移った」、302は「一時的に移動している」を表します。検索エンジンは過去に302をリンク評価の移転に反映しない挙動をしていましたが、近年の検索エンジンは状況に応じた柔軟な処理をするため、必ずしも302が評価を失わせるわけではありません。しかし、意図が恒久的なら301を使うのがベストプラクティスです。誤ったリダイレクトの選択はインデックスやランキングに悪影響を及ぼすことがあります。
実装方法(代表的な例)
サーバーや言語ごとに実装方法は異なります。下記はよく使われる例です。
-
Apache(.htaccess / mod_alias)
簡単な恒久リダイレクトは以下のように書けます:
Redirect 301 /old-page.html https://example.com/new-page/ドメイン全体をhttpsにリダイレクトする例(.htaccess + mod_rewrite):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] -
Nginx
単純なリダイレクト:
return 301 https://example.com$request_uri;特定のパスを別URLへ:
rewrite ^/old-page$ https://example.com/new-page permanent; -
PHP
ヘッダを送出してリダイレクト:
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://example.com/new-page");
exit; -
WordPress
関数でリダイレクトする場合:
wp_redirect( $url, 301 ); exit;プラグイン(Redirectionなど)を使うとGUI上でリダイレクトルールを管理できます。テーマやプラグインで意図せぬリダイレクトを入れると予期せぬ挙動になるので注意してください。
-
メタリフレッシュ(非推奨)
<meta http-equiv="refresh" content="0;url=https://example.com/"> のようなクライアントサイドのリダイレクトは、一部の検索エンジンやユーザビリティで問題があるため、恒久的移行にはサーバーサイドの301を使うべきです。
実務上の注意点とベストプラクティス
リダイレクトを導入する際は以下の点に注意してください。
- リダイレクトチェーンを避ける: A → B → C のようにチェーンが長くなるとクローラが途中で辿り切れない・評価が分散する恐れがあるため、A → C の直接リダイレクトにするのが望ましいです。
- ループを防ぐ: 誤ったルールで元URLと新URLが互いにリダイレクトし合うとループが発生し、ユーザーはエラーになります。十分にテストしてください。
- HTTP/HTTPS、www/非www の正規化: サイトは一つの正規バージョンに統一し、不要なバリエーションからは301で統一版へリダイレクトするのが一般的です。
- Query string(クエリ文字列)の扱い: クエリを保持する必要がある場合は、Nginxの$request_uriやApacheの%{QUERY_STRING}などを活用して引き継いでください。不要な場合は切り捨てを明示的に行うルールにします。
- キャッシュヘッダの設定: 301はクライアントやプロキシにキャッシュされやすいので、移行の初期段階では短めのキャッシュ期限にする、あるいはCache-Controlで制御することを検討します。
- Google Search Console の利用: 大規模なドメイン移行ではSearch Consoleの「アドレス変更」ツールやサイトマップの更新、旧URLの削除依頼などを組み合わせて移行を知らせます。
- コンテンツの一致: 301は恒久的移行を示すため、移転先のコンテンツが元ページと意味的に相当していることが望まれます。完全に異なるコンテンツへ301を向けるとユーザー・検索エンジンの混乱を招くことがあります。
トラブルシューティングと確認方法
正しくリダイレクトされているかを確認するための手段:
- curlでヘッダ確認:
curl -I -L https://example.com/old-page(LocationヘッダとHTTPステータスを確認) - ブラウザのデベロッパーツール(Networkタブ)でリダイレクトチェーンを確認
- オンラインツール(Redirect Checker、Screaming Frog、Ahrefsなど)で全体のルールやチェーンを検出
- Google Search Consoleでインデックス状況やカバレッジの変化を監視
よくある運用上のケース
- ドメイン変更: 旧ドメインから新ドメインへの全ページ301を設定し、Search Consoleでの変更申請を行う。内部リンク・外部の重要な被リンク先へ可能な限り修正依頼を行う。
- HTTP→HTTPS移行: 全てのHTTPリクエストを同一URLのHTTPSへ301でリダイレクト。HSTSの導入も考慮するが運用前に慎重な検討が必要。
- URL構造変更: パーマリンクの構造を変える際は旧URLから新URLへ301を張り、サイトマップと内部リンクを速やかに更新する。
まとめ
永久リダイレクト(301)は、Web運用におけるURL変更や正規化の中心的な手段です。正しく実装すればユーザー体験を損なわずに検索エンジンの評価を新URLへ移行できますが、リダイレクトチェーンやループ、キャッシュの問題など注意点も多くあります。実装前に影響範囲を洗い出し、テストとモニタリングを十分に行うことが成功の鍵です。
参考文献
- RFC 7231 — 6.4.2 301 Moved Permanently
- MDN Web Docs — 301 Moved Permanently
- Google Search Central — Redirects
- WordPress Developer Resources — wp_redirect()
- Apache HTTP Server Documentation — Redirect
- NGINX — ngx_http_rewrite_module
- Moz — Redirects (初心者向け解説)


