301リダイレクトと302の違い:使い分けと Google がたどる回数(標準10回)
結論: 301リダイレクト(または同等の 308)は、古いアドレスが完全になくなるときに使います。302(または 307)は、移転が一時的で、古いアドレスを検索結果に残したいときだけ使います。Google は、恒久的なリダイレクトを「転送先を処理するべき」という強いシグナル、一時的なリダイレクトを弱いシグナルとして扱います。標準では最大10回までたどりますが、古いアドレスは1回で最終的な転送先に送りましょう。
301リダイレクトと302の違いは?
リダイレクトとは、「ここにはありません。あちらへどうぞ」というサーバーの応答で、新しいアドレスを Location ヘッダーで知らせます。理由を伝えるのが、ステータスコードです。HTTP の標準(RFC 9110)では、301 は「ページに新しい恒久的なアドレスがある」ことを意味し、302 は「一時的に別の場所にあるだけ」なので、クライアントは元のアドレスを使い続けるべきだという意味です。Google も同じ違いを読み取り、それに従って動きます。
| コード | 意味 | Google の動作 |
|---|---|---|
| 301 | 恒久的に移動 | たどる。転送先を処理すべきという強いシグナル |
| 308 | 恒久的なリダイレクト | 301 と同じ |
| 302 | Found(一時的) | たどる。転送先を処理すべきという弱いシグナル |
| 307 | 一時的なリダイレクト | 302 と同じ |
この表は、Google の HTTP ステータスコードのページ(最終更新 2026-02-04)によるものです。検索でどういう意味になるかは、Google のリダイレクトのページ(最終更新 2026-04-14)にあります。恒久的なリダイレクトでは検索結果に新しい転送先が表示され、一時的なリダイレクトでは元のページが表示されます。ここでリンクした Google のページは、2026年11月4日に読みました。
そもそも、なぜ 307 と 308 があるのでしょうか。Google は、307 と 308 を 302 と 301 と同じように扱いますが、意味は異なると注記しています。そのため、状況に合ったコードを選んでください。違いは、リクエストメソッドです。301 や 302 のあとでは、クライアントは POST を GET に変えてもかまいません。307 や 308 のあとでは、メソッドを保たなければなりません(RFC 9110、15.4 節)。ふつうのページ表示では気づかない違いですが、POST を受け取るフォームや API には、308 か 307 を使います。
301リダイレクトと302はどちらを使う?
ほとんどの場合は、1つの問いで決まります。Google のリダイレクトのページには、“Use permanent redirects when you're sure that the redirect won't be reverted.”(リダイレクトが元に戻らないと確信できるときは、恒久的なリダイレクトを使う)とあります。古いアドレスが二度と戻ってこないなら 301、戻ってくるなら 302 です。
| 状況 | 使うもの | 補足 |
|---|---|---|
| ページに新しいアドレスが付いた(新しいスラッグ、新しいフォルダー) | 301 または 308 | 検索結果には新しい転送先が表示される |
| 2つのページを1つに統合した | 古い各アドレスから統合後のページへ 301 | Google のサイト移転ガイドは、統合したコンテンツにこれを認めている |
| http から https へ、www から www なしへ(またはその逆) | 301 または 308 | Google:優先するアドレスを1つ選び、ほかをそこへリダイレクトする |
| サービスがしばらく停止していて、訪問者に説明ページを見せる | 302 または 307 | 古いアドレスは検索結果に残る |
| ページがなくなり、代わりのページもない | リダイレクトしない:404 または 410 | ステータスコードで、ページがなくなったことを伝える |
| 多数の古いアドレスをトップページへ | しない | Google:ソフト404として扱われることがある |
最後の行は、Google のサイト移転ガイド(最終更新 2026-08-20)にあります。ソフト404の見つけ方は、ソフト404エラーの記事で紹介しています。このガイド自体が扱うのは、サイト全体を新しいドメインに移すことで、この記事が扱う範囲よりも大きな作業です。
選択を間違えると、何が起きるでしょうか。恒久的に移転したページに 302 を使うと、Google に事実と違うことを伝えることになります。一時的なリダイレクトでは元のページが検索結果に残り、“the target page might still be indexed if other canonicalization signals are present”(ほかの正規化のシグナルがあれば、転送先のページもインデックスされることがある)とされています。これは「かもしれない」という程度の話です。長く続いた 302 が、のちに 301 になると約束する Google のページは、見つかりませんでした。そのため、それを待たないでください。
Google はリダイレクトを何回たどる?
Google のステータスコードのページには、“By default, Google's crawlers follow up to 10 redirect hops.”(標準では、Google のクローラーは最大10回のリダイレクトをたどる)とあります。Googlebot は、ウェブコンテンツでは一般に10回たどります。ほかの Google のプロダクトは、別の上限を使うことがあります。リダイレクト元のアドレスが返す内容は無視され、代わりに最終的な転送先の内容が処理されます。
10回は上限であって、目標ではありません。サイト移転ガイドは、最終的な転送先へ直接リダイレクトするよう勧めています。それができない場合は、チェーンを短く、できれば3回以内、5回未満に抑えるよう勧めています。理由は、“Chaining redirects adds latency for users, and not all user agents and browsers support long redirect chains.”(リダイレクトを連鎖させるとユーザーの待ち時間が増え、すべてのユーザーエージェントやブラウザーが長いリダイレクトチェーンに対応しているわけではない)です。Google のクロールエラーのページ(最終更新 2025-12-18)は、長いチェーンがクロールに悪影響を及ぼすと補足しています。
チェーンは、意図して作るものではなく、層が積み重なってできます。典型的な例では、ページが表示されるまでに3回のリダイレクトがあります。
http://example.com/old-guide 301 -> https://example.com/old-guide
https://example.com/old-guide 301 -> https://www.example.com/old-guide
https://www.example.com/old-guide 301 -> https://www.example.com/new-guide
https://www.example.com/new-guide 200
直し方は、古いアドレス1つにつき1回のリダイレクトにすることです。古いアドレスのどの表記でも、最終的なアドレスを指す 301 を1回だけ返します。自分のリンクも同じです。内部リンク、canonical タグ、サイトマップのエントリは、最終的なアドレスに向けてください。リダイレクトは、外から来る訪問者や古いブックマークのためのもので、自分のサイト内のナビゲーションのためのものではありません。
301リダイレクトの設定方法
サーバー側のリダイレクトを使います。Google のリダイレクトのページは、サーバー側のリダイレクトを、最も正しく解釈されやすい種類として挙げています。下の nginx と Node の例は、2026年11月4日に実行し(nginx 1.24.0、Node 25.9.0)、応答を curl で読みました。Apache の行は Google 自身の例で、私たちは実行していません。
まず nginx です。location のルールは、https://example.com の server ブロックに置きます。2つの server ブロックは、それ以外の表記をすべて1回で https://example.com に送り、$request_uri がパスとクエリ文字列を保ちます。
# 1ページが恒久的に移転した場合(一時的な移転なら 302 を使う)
location = /old-guide {
return 301 https://example.com/new-guide;
}
# http:// と https://www. は、どちらも https://example.com へ
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/ssl/example.com.pem;
ssl_certificate_key /etc/ssl/example.com.key;
return 301 https://example.com$request_uri;
}
パッケージなしの Node です。POST リクエストを POST のまま保ちたい場合は、301 を 308 に置き換えます。
import http from 'node:http';
const moved = new Map([['/old-guide', '/new-guide']]); // 旧パス -> 新パス
http.createServer((req, res) => {
const { pathname, search } = new URL(req.url, 'http://localhost');
const target = moved.get(pathname);
if (target) {
res.writeHead(301, { location: `https://example.com${target}${search}` });
return res.end();
}
res.writeHead(200, { 'content-type': 'text/plain' });
res.end('ok');
}).listen(3000);
Apache は、Google のページにある例です(サーバー設定か .htaccess ファイルに書きます)。
Redirect permanent "/old" "https://example.com/new"
Redirect temp "/two-old" "https://example.com/two-new"
サーバーに手を入れられない場合は、まず使っているプラットフォームを確認してください。Google は、リダイレクトのツールが組み込まれていることがある例として、Blogger と Shopify を挙げています。Google は、meta refresh(0秒なら恒久的、遅延ありなら一時的として扱う)や JavaScript によるリダイレクトも読み取りますが、あくまで代替手段としてです。JavaScript の場合、レンダリングに失敗すると、Google 自身が書いているように、リダイレクトを “might never see it”(まったく目にしない可能性がある)のです。
リダイレクトの確認方法と、SEOgrinder が見つけるもの
curl のコマンド2つで確認できます。1つめは、すべてのリダイレクトのステータスと転送先を出力し、2つめは、回数と最終的なアドレスを出力します。HEAD ではなく GET を使うのは、サーバーによっては HEAD に別の応答を返すことがあるからです。
curl -s -L -o /dev/null -D - http://example.com/old-guide | grep -i -E "^(HTTP|location)"
curl -s -L -o /dev/null -w "%{num_redirects} redirects, final: %{url_effective}\n" http://example.com/old-guide
人やリンクが使うすべての表記(http と https、www ありとなし)で実行してください。望ましい結果は、1回の 301 のあとに 200 が返ることです。
SEOgrinder は私たちのツールで、私たちが開発しています。SEOgrinder の無料スキャンは、3か所でリダイレクトを調べます(名前は日本語の画面のものです)。
- 「技術とセキュリティ」タブの「リダイレクト」カード。 スキャンしたアドレスのリダイレクトの経路を一覧にします。そのアドレスが2回以上リダイレクトする場合は、タスク「リダイレクトが N 回連続しています」が経路を示し、最初の URL が最終的な転送先を直接指すようにと助言します。
- 同じタブの「ドメインの統一」カード。 http と https、www ありとなしが、1つのアドレスに行き着くことを期待します。そうでなければ、タスク「サイトが N 通りに分かれています」が出ます。ある表記が 302、303、307 でリダイレクトする場合は、「ドメインのリダイレクトが一時的なものです」が出ます。
- 「Google 上のページ」タブ。 タスク「内部リンク N 件が遠回りの経路を通っています」は、リンク先がリダイレクトする、または別のページを canonical として指している内部リンクを挙げます(スキャンしたページの内部リンクのうち、最大60件)。
制限が2つあります。1つめは、チェーンの検査が対象とするのが、スキャンしたアドレスと自分のドメインの表記であって、サイトのすべての古いアドレスではないことです。古いアドレスは curl で確認してください。2つめは、SEOgrinder が、転送先が適切な後継ページかどうかや、Google がリダイレクトをどう扱ったかを判断できないことです。「AI に渡す」はタスクをコーディングエージェント向けの作業指示書にし、「再チェック」は変更後に新しいスキャンを実行します。
よくあるミス
- 恒久的な移転なのに 302 を使う。 古いアドレスが検索結果に残ることがあります。301 か 308 を使いましょう。
- 一時的なことに 301 を使う。 1週間閉店するショップには、302 が必要です。
- ルールが積み重なってチェーンになる。 まず http、次に https、次に www、最後に新しいページで、3回になります。どのルールにも、最終的なアドレスを書きましょう。
- すべてをトップページに送る。 同等のページにリダイレクトするか、404 や 410 を返します。
- 自分のリンクが古いアドレスのまま。 内部リンク、canonical、サイトマップを更新します。
- 古いアドレスを robots.txt でブロックする。 Google がそのアドレスを取得できず、リダイレクトを目にすることがありません。2011年の Google の投稿 Do 404s hurt my site? には、クローラーが応答を見るには、その URL を “has to be able to crawl that URL”(クロールできなければならない)とあります。
- リダイレクトを早く外しすぎる。 サイト移転について、Google は “Keep the redirects for as long as possible, generally at least 1 year.”(リダイレクトはできるだけ長く、一般に少なくとも1年は維持する)と書いています。これを1つのページに当てはめるのは、私たちの解釈です。
よくある質問
301リダイレクトは SEO に悪影響がありますか?
Google のサイト移転ガイドには、“301 and other permanent redirects don't cause a loss in PageRank.”(301 などの恒久的なリダイレクトで、PageRank は失われない)とあります。この文はサイト移転のガイドにあるもので、1つのページに当てはめるのは私たちの解釈です。Google が警告しているのは、長いチェーン、無関係なページへのリダイレクト(ソフト404)、そして移転中にクロールし直すあいだの順位の変動です。
308 は 301 より優れていますか?
Google にとっては、どちらも同等です。308 はリクエストメソッドも保つので、フォームや API で意味があります。ふつうのページなら、301 で問題ありません。
Google が新しいアドレスを表示するまで、どのくらいかかりますか?
1つのページについては、Google が時間を示している箇所は見つかりませんでした。サイト移転については、中規模のサイトで、新しい URL が検索結果の古い URL に少しずつ置き換わるまで “it can take a few weeks or more”(数週間以上かかることがある)としています。日付を約束してはいけません。
次のステップ
1つめの curl コマンドを、古いアドレスと、自分のドメインのすべての表記に対して実行してください。1回を超えるリダイレクトが必要なリクエストがあれば、最初のアドレスが最終的なアドレスを直接指すように直します。そのあと、SEOgrinder でサイトをスキャンし、「技術とセキュリティ」タブを開いて「リダイレクト」と「ドメインの統一」を見て、変更後に「再チェック」を押します。技術面の基本をもっと知りたい場合は、SEOチェックリストの記事を参照してください。