301リダイレクトと302の違い:使い分けと Google がたどる回数(標準10回)

SEOgrinder 編集部 · 公開日 · 読了時間 約13分

結論: 301リダイレクト(または同等の 308)は、古いアドレスが完全になくなるときに使います。302(または 307)は、移転が一時的で、古いアドレスを検索結果に残したいときだけ使います。Google は、恒久的なリダイレクトを「転送先を処理するべき」という強いシグナル、一時的なリダイレクトを弱いシグナルとして扱います。標準では最大10回までたどりますが、古いアドレスは1回で最終的な転送先に送りましょう。

301リダイレクトと302の違いは?

リダイレクトとは、「ここにはありません。あちらへどうぞ」というサーバーの応答で、新しいアドレスを Location ヘッダーで知らせます。理由を伝えるのが、ステータスコードです。HTTP の標準(RFC 9110)では、301 は「ページに新しい恒久的なアドレスがある」ことを意味し、302 は「一時的に別の場所にあるだけ」なので、クライアントは元のアドレスを使い続けるべきだという意味です。Google も同じ違いを読み取り、それに従って動きます。

コード意味Google の動作
301恒久的に移動たどる。転送先を処理すべきという強いシグナル
308恒久的なリダイレクト301 と同じ
302Found(一時的)たどる。転送先を処理すべきという弱いシグナル
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つに統合した古い各アドレスから統合後のページへ 301Google のサイト移転ガイドは、統合したコンテンツにこれを認めている
http から https へ、www から www なしへ(またはその逆)301 または 308Google:優先するアドレスを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チェックリストの記事を参照してください。

あわせて読みたい

ブログのほかの記事