ブログ · SEO

301リダイレクトの使いどころ・設定方法・確認方法

301は、URLが恒久的に移転したことをブラウザと検索エンジンに伝えます。本ガイドでは、リダイレクトの種類とGoogleの扱い、すべてのサイトが統合すべき4つのホストバージョン、チェーンとループ、Apache・Nginx・Next.jsの設定例、リダイレクトチェッカーが報告する問題の解決方法を解説します。

Searvia · 2026/10/24 · 読了目安:3分

要点: 301リダイレクトは、URLが恒久的に移転したことをブラウザと検索エンジンに伝えます。Googleは301と308を、リダイレクト先を正規URLにすべきという強いシグナルとして扱います。302と307は一時的なもので、元のURLが残ります。すべてのサイトは1つのアドレスだけで応答する必要があります。http://、https://、wwwあり、wwwなしのすべてが、1ホップで同じ最終URLにリダイレクトされなければなりません。リダイレクトは少なくとも1年間は維持し、内部リンクは最終アドレスに更新し、到達先だけでなくチェーン全体を確認してください。

リダイレクトは正常に動いている間は目に見えません。問題が起きても、症状は曖昧です。wwwありとなしで順位が分散する、移行後に何か月もトラフィックが落ちる、トップページが3つのアドレスを経由するため表示に余計に1秒かかる、といった具合です。こうした問題の多くは、自分のアドレスの各バージョンを最後までたどれば1分で見つかります。

このガイドでは、リダイレクトの種類とGoogleの扱い、すべてのサイトが統合すべきホストバージョン、チェーンとループ、主要なサーバーでの設定、無料のリダイレクトチェッカーの仕組み、報告される各問題の解決方法を解説します。

リダイレクトとは

リダイレクトとは、「このリソースは別の場所にあります」と伝え、新しいアドレスをLocationヘッダーで示すレスポンスです。ブラウザは新しいアドレスへ自動的にリクエストします。サーバーサイドのリダイレクトは、通信上では次のようになります。

HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-page

ステータスコードは、移転をクライアントがどう扱うべきかを示します。MDNでは、リダイレクトを恒久的なもの(クローラーが「元のURLを更新する」)と一時的なもの(クローラーが「記憶しない」)に分けています。

コード意味GET以外のリクエストでのメソッドGoogleの扱い用途
301Moved PermanentlyPOSTがGETに変わるクライアントがある恒久的:リダイレクト先が正規URLになるページの移転、ホストの統合、HTTPからHTTPSへ
308Permanent Redirectメソッドとボディを維持恒久的301と同じ。フォームやAPIにも
302FoundPOSTがGETに変わるクライアントがある一時的:元URLが検索結果に残ることがある短期の移転、A/Bテスト
303See OtherGETに変更される一時的フォーム送信後
307Temporary Redirectメソッドとボディを維持一時的GET以外のリクエストでの短期の移転

Googleのリダイレクトに関するドキュメントでは、即時のmeta refresh(0秒)とJavaScriptのlocation変更も恒久的なものに分類し、遅延のあるmeta refreshは一時的なものとしています。可能な限りサーバーサイドの恒久リダイレクトを推奨しており、レンダリングが失敗することがあるため、「サーバーサイドやmeta refreshのリダイレクトが使えない場合にのみJavaScriptリダイレクトを使う」よう述べています。

リダイレクトがSEOで重要な理由

重複を統合します。 Googleの正規化ガイドは、リダイレクトを「リダイレクト先が正規になるべきという強いシグナル」として挙げています。リダイレクトがないと、同じコンテンツに対するリンクなどのシグナルが複数のURLに分散することがあります。

移行時にページを引き継ぎます。 URLが変わるとき、旧URLからそれぞれ対応する新URLへ301を設定すると、Googleにインデックス内の入れ替えを伝えられ、古いリンクからの訪問者を正しいページへ送れます。

HTTPSを守ります。 Googleは「同等のHTTPページよりHTTPSページを正規として優先」し、同じガイドでHTTPからHTTPSへのリダイレクトをそれを補強する方法の1つとして挙げています。

時間がかかります。 ホップのたびに、ページの読み込みが始まる前にラウンドトリップが1回増えます。モバイル回線では、3回のリダイレクトチェーンは何も表示されない時間として体感できる遅延になります。

1サイト、1アドレス

クローラーにとって、次の4つは同じページを表示していても別々のサイトです。

http://example.com/
http://www.example.com/
https://example.com/
https://www.example.com/

1つ(通常はwwwありまたはなしのHTTPS版)を選び、残りの3つが1回の301でそこへ直接転送されるようにします。wwwありかなしかは好みの問題です。重要なのは、200で応答するバージョンが1つだけであることです。また、TLS証明書がexample.comとwww.example.comの両方をカバーしていることも確認してください。そうでないと、https://wwwのリダイレクトは実行される前に失敗します。

同じルールはサイト内にも当てはまります。/pricingと/pricing/の両方が200で応答するなら、一方の形式を選び、もう一方をリダイレクトしてください。

チェーンとループ

チェーンとは、リダイレクトが別のリダイレクトにつながっている状態です。最も多いのは、プロトコルとホストを別々のステップで処理しているケースです。

http://www.example.com/  301 →  https://www.example.com/  301 →  https://example.com/

Googleのクローラーは「最大10回のリダイレクトホップをたどり」ます(HTTPステータスコードとGoogle検索)。そのため、2ホップのチェーンでページが失われることはありません。しかしGoogleのサイト移転ガイドは、「リダイレクトのチェーンを避け」、「最終的な移転先へ直接」リダイレクトするよう述べており、それが難しい場合はチェーンを短く、「3回以内が理想で、5回未満」に抑えるよう示しています。どちらにしても、ホップごとのコストは訪問者が負担します。

ループは終わらないチェーンです。AがBに、BがAにリダイレクトされる状態で、サーバーのHTTPSルールとCDNの別のルールが食い違っていることがよくあります。MDNによると、ブラウザはループを検出してエラーを表示するため、ページには到達できなくなります。

301リダイレクトの設定方法

Apache(.htaccessまたはバーチャルホスト)で、すべてのバージョンをhttps://www.example.comに統合する例:

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

単一ページならRedirect 301 /old-page https://www.example.com/new-pageで十分です。MDNによると、コードを指定しないRedirectは、デフォルトで302を返します。

Nginxでは、1つのserverブロックでそれ以外のすべてのバージョンを受け止めます。

server {
    listen 80;
    listen 443 ssl;
    server_name example.com www.example.com;
    # ssl_certificate lines here for the 443 listener
    if ($host = example.com) { return 301 https://www.example.com$request_uri; }
    if ($scheme = http)      { return 301 https://www.example.com$request_uri; }
    # ... the site itself
}

別々のserverブロックに分ける構成も多く、各バージョンが1ステップで最終アドレスに到達するなら、どちらでも問題ありません。

Next.jsでは、next.config.jsに記述します。

module.exports = {
  async redirects() {
    return [
      { source: '/old-blog/:slug', destination: '/blog/:slug', permanent: true },
    ]
  },
}

Next.jsのドキュメントによると、リクエストメソッドを保持するため、permanent: trueは308、permanent: falseは307を返します。Googleは308を恒久的なものとして扱うので、問題ありません。

CDNとホスティング。 多くのCDNやホスティングの管理画面には、リダイレクトルールや「常にHTTPSを使用」のスイッチがあります。役割ごとに1つのレイヤーを使いましょう。CDNがHTTPをHTTPSに引き上げ、オリジンサーバーもホストをリダイレクトすると、2ホップのチェーンになり、両者が食い違うとループになります。

WordPress。 「設定」›「一般」のサイトアドレスが正規ホストを決め、WordPressは他のホストをそこへリダイレクトします。ページ単位のリダイレクトにはリダイレクトプラグインやSEOプラグインのリダイレクト管理機能を使い、ホストの統合にはサーバールールを優先してください。

Searviaのリダイレクトチェッカーの仕組み

リダイレクトチェッカーは、ウェブサイトSEOチェッカーと同じエンジンを使っています。ドメインを入力すると、トップページとその周辺のファイルを38項目のチェックで約20秒で監査し、このツールの主題である3つのチェックを最初に表示します。それぞれの内容は次のとおりです。

リダイレクトと重複バージョン(中優先度)。 チェッカーは入力されたドメインからwww.を取り除き、4つのアドレス(http://とhttps://、それぞれwwwありとなし)を開きます。それぞれを最大6回のリダイレクトまでたどり、到達先と各ホップのステータスコードを記録します。トップページの最終アドレスと同じスキームとホストに、恒久的な(301または308)リダイレクトだけで到達すれば、そのバージョンは合格です。結果は次のとおりです。

レポートには4つのバージョンそれぞれについて、最終URL、途中のリダイレクトコード(例:301 › 301)、チェックマークまたはバツ印が表示されます。名前解決できない、または到達できないバージョン(たとえばDNSレコードのないwwwホスト)は、不合格にはならず対象から除外されます。

HTTPS(高優先度)。 リダイレクトをたどらずに、http://とホスト名でリクエストします。サイトがHTTPSで動作し、HTTPリクエストに対してLocationがhttps://で始まる3xxが返れば合格です。「HTTP does not redirect to HTTPS」または「The site does not work over HTTPS」で不合格になります。プレーンHTTPがまったく応答しない場合はリダイレクトをテストできないため、合否ではなくメモが表示されます。

ページのステータス(高優先度)。 最終ページは2xxのステータスで応答する必要があります。4xxまたは5xxは不合格です。

テストしないもの

各ホップのURLとコードをすべて確認するには:

curl -sIL http://www.example.com/ | grep -iE '^(HTTP|location)'

結果の読み方

メッセージ意味対処
All versions of the address lead to one URL.到達可能なすべてのバージョンが、恒久的なリダイレクトでメインサイトに到達しているなし
Some versions of the address do not redirect to the main one.少なくとも1つのバージョンが単独で応答するか、別の場所に到達しているステップ1
N versions use a temporary redirect (302, 303 or 307); use a permanent 301 or 308.途中のホップが一時的なものになっているステップ6
URL ends in a redirect loop. / URL goes through more than 6 redirects.あるバージョンがページに到達しないステップ6
The address goes through N redirects; link to the final address.メインアドレスが2回以上転送されているステップ2
HTTP does not redirect to HTTPS.プレーンHTTPがリダイレクトせずにページで応答しているステップ3
The site does not work over HTTPS.HTTPSの応答が正常に得られないステップ4
The page answers with status N.最終ページが2xxではないステップ5

総合評価は38項目すべてを対象に、優先度で重み付けされています(高10、中5、低2。警告は半分)。「まず修正すべき項目」のリストと、共有できるレポートリンクも付きます。

チェッカーが報告するすべての問題の解決方法

1. 一部のバージョンがメインアドレスにリダイレクトされない

2. アドレスが複数回リダイレクトされる

3. HTTPがHTTPSにリダイレクトされない

4. サイトがHTTPSで動作しない

証明書をインストールし(Let's Encryptは無料で、多くのホスティングが自動化しています)、使用するすべてのホスト名をカバーしていることを確認してから、ステップ3のHTTPからHTTPSへのリダイレクトを追加します。次に片付けるべきはミックスコンテンツ、つまりまだhttp://で読み込まれているスクリプトや画像です。

5. トップページが200で応答しない

5xxはサーバーの問題なので、エラーログを確認してください。403は、ファイアウォールやボット対策が自動リクエストを拒否していることが多く、検索クローラーも拒否している可能性があります。トップページの404は、通常、リダイレクトが存在しなくなったパスへ訪問者を送っていることを意味します。リダイレクト先を修正し、再チェックしてください。

6. 一時的なリダイレクト、ループ、長いチェーン

移行時のリダイレクト

URLが変わるとき、上記のホストレベルのルールは出発点にすぎません。Googleのサイト移転ガイドは、次の点を加えています。

多言語サイトについては、Googleからもう1つルールがあります。訪問者の所在地やブラウザの言語に基づいて言語バージョン間で自動的にリダイレクトするのは避けてください。「Googlebotクローラーは通常、米国から来る」ため、他のバージョンを見られないことがあるからです(多地域サイト)。代替策はhreflangガイドで解説しています。

実例(架空)

以下は架空の例であり、実際のデータではありません。架空の家具店Bramble & Coが、新しいプラットフォームに移行しました。リダイレクトチェッカーの結果は次のとおりです。

バージョン到達先(コード)OK
http://bramble.example/https://www.bramble.example/(302 › 301)No
http://www.bramble.example/https://www.bramble.example/(301)Yes
https://bramble.example/https://bramble.example/No
https://www.bramble.example/https://www.bramble.example/Yes

https://のネイキッドドメインは、リダイレクトされずにサイト全体で応答していました。新しいプラットフォームが両方のホストを配信しており、ホストのルールがあったのは旧サーバーだけだったのです。また、コードから、http://bramble.example/は2ホップで、最初が302だったこともわかりました。チームはCDNに、最終バージョン以外のすべてに適用する301ルールを1つ追加し、チェーンを避けるためプラットフォーム側のHTTPSリダイレクトを削除して再チェックしました。4つのバージョンすべてが、1ホップでhttps://www.bramble.example/に到達するようになりました。

15分でできるリダイレクトチェックリスト

Searviaでできること

無料のリダイレクトチェッカーは、アドレスのすべてのバージョンをたどり、HTTPSとトップページのステータスを、共有できる1つのレポートにまとめます。Searviaのアカウントでは、サイト監査が毎週サイト全体をクロールし、リダイレクトを指す内部リンク、サイトマップ内のリダイレクトまたは壊れたURL、エラーを返すページを検出するので、あらゆる場所で最終アドレスに直接リンクできます。稼働監視は24時間体制でサイトを監視し、ダウンしたときや証明書の期限が近づいたとき(HTTPSリダイレクトが最も壊れやすいタイミング)に通知します。技術的なチェックの全体的な順序は、テクニカルSEO監査ガイドをご覧ください。

よくあるご質問

301リダイレクトとは何ですか?
301リダイレクトは、ステータス301 Moved Permanentlyと、新しいURLを指すLocationヘッダーを持つHTTPレスポンスです。ブラウザは新しいアドレスへ自動的に移動し、検索エンジンはこれを恒久的な移転として扱います。Googleは、恒久的なリダイレクトをリダイレクト先が正規URLになるべきというシグナルとして使うと説明しており、検索結果では新しいアドレスが古いものに置き換わります。
301と302リダイレクトの違いは何ですか?
301は恒久的、302は一時的なものです。Googleは301と308を、リダイレクト先が正規になるべきという強いシグナルとして扱いますが、302、303、307では元のURLが検索結果に残ることがあります。ページが恒久的に移転した場合は301または308を、元のURLが戻ってくる場合にのみ302または307を使います。
301と308のどちらを使うべきですか?
検索エンジンにとっては、どちらも恒久的なリダイレクトで、同じように扱われます。違いはGET以外のリクエストにあります。308はメソッドとボディを維持しますが、301ではクライアントによってはPOSTがGETに変わります。通常のページ移転には301を使います。308でも問題なく、Next.jsなどのフレームワークは恒久的なリダイレクトに308を使っています。
リダイレクトチェーンは何ホップまでなら許容範囲ですか?
Googleは、クローラーが一般的に最大10回のリダイレクトホップをたどると述べています。ただしサイト移転のガイダンスでは、チェーンを避けて最終的な移転先へ直接リダイレクトし、それが難しい場合でもチェーンは理想的には3回以内、5回未満に抑えるよう示しています。ホップが増えるたびに訪問者の待ち時間も長くなるため、目標は1ホップです。
301リダイレクトはどのくらいの期間維持すべきですか?
Googleのサイト移転に関するドキュメントでは、リダイレクトは可能な限り長く、一般的には少なくとも1年間維持するよう述べています。訪問者の視点では、メールやブックマーク、他サイトにある古いリンクが使い続けられるよう、無期限に維持するのが最善です。

ソース

  1. Redirects and Google Search – Google Search Central
  2. How HTTP status codes, and network and DNS errors affect Google Search – Google Search Central
  3. Site moves with URL changes – Google Search Central
  4. How to specify a canonical URL – Google Search Central
  5. Redirections in HTTP – MDN Web Docs
  6. redirects – Next.js documentation
  7. Managing multi-regional and multilingual sites – Google Search Central

続きを読む