301リダイレクトとは?URLを変える前の準備と確認方法

以前送ったメールに、古い案内ページのURLが残っている。ページを移したあとも、そこから来る人に準備の説明を読んでほしい。会社や店舗のサイト更新を兼務する方がそんな場面で使うのが、301リダイレクトです。元のURLへ戻す予定がないとき、古いURLから新しい場所へ案内する仕組みで、行き先には同じ答えを読めるページを選びます。
この記事では、301と302の違い、行き先の決め方、設定後に確かめる順番を、架空の印刷案内で説明します。読み終えたら、自分の案内1ページについて「どこから、どこへ、何を確かめるか」を整理し、制作会社やサイトの管理担当へ具体的に依頼できます。
301は、古いURLへ来た人を、同じ答えがある新しいページへ案内するための移転通知です。行き先を先に決め、301・行き先・最終本文を照合し、未確認を残して担当へ渡します。

店・案内内容・URL・記入例は説明用の架空例です。実際の印刷受付、取引、店舗規約、検索移転の成功事例ではありません。
この記事で読むこと
01
古いメールのURLを開くと、何が起きる?
301リダイレクトは、古いURLから新しいページへ案内する仕組み
要点古いURLに来たブラウザへ新しい行き先を知らせ、そのページを開きます。301は、元へ戻す予定のない移転を伝える番号です。
URLは、ページの住所に当たるものです。リダイレクトは、開いたURLから別のURLへ案内すること。301は、その移転が永続的であることを伝える返事の番号です。「このページは新しい場所へ移りました」という通知を、ページを届けるサーバーが返します。
たとえば、架空の印刷店が「印刷を頼む前に用意するもの」の案内を、古いURLから新しいURLへ移すとします。昔のメールを開いた人にも、新しい案内で用紙サイズや部数の準備を読んでもらいたい。そのとき、古いURLから新しい案内へ転送する301が候補になります。

表は横に動かして読めます。
| 順番 | 何が起きるか | この例で確かめること |
|---|---|---|
| 古いURLを開く | ブラウザが古いページを取りに行く | /old-guide/を開いたか |
| 移転の返事を受け取る | サーバーが301と新しい行き先を知らせる | 301、行き先は/new-guide/ |
| 新しいURLを開く | ブラウザが行き先のページを取りに行く | /new-guide/へ進む |
| 案内を読む | 新しいページの本文が届く | 200で、同じ準備の説明を読める |
ブラウザとサーバーが要求と返事をやり取りする決まりをHTTPと呼びます。301のような返事の番号は、HTTPステータスコードです。行き先はLocationという情報に入ります。Locationは「移転先の住所」と考えると、表の順番をたどりやすくなります。
本文に「移転しました」と書いたり、新しいページへのリンクを置いたりするだけでは、サーバーが301を返したことにはなりません。また、URLを変えずに文章や写真を更新するだけなら、そのための301は不要です。題名を直すために、URLまで変える必要があるかを先に考えてください。
02
ずっと移す、一時的に案内する、なくなった場合は同じ?
301と302の違いは、元のURLへ戻す予定があるか
要点戻す予定のない移転は301、一時的な別の案内は302を検討します。代わりの内容がない削除では、無関係な行き先を作りません。
| 比べる点 | 301 | 302 |
|---|---|---|
| 移す期間 | 永続的 | 一時的 |
| 元へ戻す予定 | ない | ある |
301と302は、どちらも別のURLへの案内に使う返事の番号です。違いは、移動の意味です。301は永続的な移転、302は一時的な移動を伝えます。見た目が同じ新しい画面へ進んでも、途中で返した番号が違うことがあります。

表は横に動かして読めます。
| 変更する内容 | 元に戻す予定・代わりの内容 | 候補と次にすること |
|---|---|---|
| 準備の案内を新URLへ移す | 戻す予定がなく、同じ準備を新ページで読める | 301の候補。行き先の内容を照合する |
| 受付の案内を一時的な別ページで見せる | 後で元の受付URLへ戻す予定 | 302などの一時転送を検討。期間と戻す担当を決める |
| 昔の募集案内を削除する | 募集は終了し、同じ案内の代わりがない | 404または410を検討。探し直せる案内を用意する |
| 二つの解説を一つへまとめる | 両方の答えが統合後のページに残る | それぞれの旧URLから統合先への301を検討 |
404は、要求されたURLの内容が見つからないことを伝える番号です。410は、その内容がなくなったことを伝える番号です。404だけでは一時的か永久かは決まりません。代わりの内容がないURLを、店のトップページへ全部転送すると、探していた答えを得られない場合があります。
SEOは、検索から必要な情報を見つけてもらうためにサイトを整えることです。Googleも、永続的な転送と一時的な転送を分けて扱います。301は、新しい行き先を扱うための手がかりになります。ただし、301を入れれば同じ検索順位や売上になるとは言えません。302を「SEOの価値がゼロ」と考えず、戻す予定と目的に合う番号を選びます。
まず、移すページに「戻す予定があるか」「同じ答えを読める代わりのページがあるか」を書きます。移転先が決まらない場合は、転送の設定値を先に埋めず、内容を決める担当へ戻します。
03
新しいページなら、どこへ案内してもよい?
転送先は、古いページを読む人が同じ答えを得られるページ
要点古いページを読む目的に答えられるかで選びます。URLの短さや見た目の似方だけでは決めません。
架空の印刷店の古い案内は、依頼前に用紙サイズ・部数・希望時期・原稿の状態を整理するためのページです。新しい案内に同じ準備項目があれば、行き先の候補になります。一方、営業時間だけが載った店のトップページでは、印刷を頼む準備が分かりません。

表は横に動かして読めます。
| 候補 | 読める内容 | 行き先としての考え方 |
|---|---|---|
| 新しい「印刷依頼前の準備」 | 用紙サイズ・部数・希望時期・原稿の状態 | 同じ用事に答える行き先の候補 |
| 店のトップページ | 店の紹介と営業時間のみ | この例の準備を答えないため、そのまま転送先にしない |
| まだ公開していない新案内 | 担当者だけが見られる下書き | 一般の人が読める状態を先に整える |
新しいURLを先に開き、必要な本文を読めるかを確認します。200は、要求した内容を正常に返したことを示す番号です。しかし、200でも「ページがありません」という文だけなら、読者の用事は終わりません。Googleでも、200のエラー表示をsoft 404として扱う場合があります。soft 404は、番号と中身が食い違う状態として理解してください。
旧URLは、手元のメール、サイト内のリンク、管理画面のページ一覧などから正確に集めます。URLの「?」のあとに内容を選ぶ情報が付く場合は、その用途も確認します。たとえば言語を変える値が付くURLを、同じ日本語ページへ一律に送ってよいとは限りません。分からない値は、管理担当へ聞く項目として残します。
表は横に動かして読めます。
| 古いURL | 読む目的 | 新しいURLの候補 | 残る答え | 種類・状態 |
|---|---|---|---|---|
| https://example.test/old-guide/ | 印刷依頼前に何を用意するか調べる | https://example.test/new-guide/ | 用紙サイズ・部数・希望時期・原稿の状態 | 永続移転の計画。実設定・実確認は未実施 |
画像やPDFのURLも変わるなら、本文のURLとは別の行にして移転先を確認します。二つのページをまとめる場合も、両方の答えが統合先に残っているかを見ます。「同じテーマらしい」という推測だけで転送を決めないようにします。
04
新しい画面が開けば、301は確認済み?
設定後は、301・行き先・最後のページを順に確かめる
要点最後のアドレスだけでは、途中で301か302を返したかは分かりません。旧URLの番号、Location、最後のページの番号と本文を見ます。
設定を担当者へ依頼するときも、期待する動きを先に表にします。この例なら、旧URLが301を返し、Locationが新URLを示し、新URLで200と同じ準備の説明を読めることです。さらに、転送対象ではないページの表示も変わっていないかを確かめます。
表は横に動かして読めます。
| 開くところ・見るもの | この例の期待 | 自分の確認結果 |
|---|---|---|
| 古い案内のURL | 301を返し、Locationが新しい案内のURL | 未実施・未確認 |
| 新しい案内のURL | 200を返し、同じ準備項目を読める | 未実施・未確認 |
| 転送の途中 | 関係ないページを経由せず、旧URLへ戻らない | 未実施・未確認 |
| 転送対象ではないページ | そのルールを追加する前の正常な表示を保つ | 未実施・未確認 |
自分で通信を見る場合は、パソコンのChromeでページを開き、ページの上で右クリックして「検証(Inspect)」を選びます。開いた開発者ツールで「Network」を選んでください。Networkは、ページを取りに行った通信の記録です。ページを移動しても記録を残すPreserve logを有効にしてから、古いURLを開いてください。名称や表示位置が違う場合は、現在のChromeの案内で確認します。
通信で確かめる順番は、下の図の三つです。図の数字は期待する動きであり、自分のサイトの確認結果とは分けて読みます。

図の上段は古いURLの返事、中段はその行き先、下段は新しいページです。301だけで終わらせず、Locationと新ページの200、必要な本文までを、実際の通信と画面で確かめます。
- 古いURLの通信を選び、Status(返事の番号)が301かを見る。
- Headers(通信の詳細情報)のResponse Headers(受け取った情報)でLocation(行き先)を見る。
- 続いて新URLの通信が200かを見て、表示された本文の準備項目を読む。
- 開いたURL、確認日時、番号、行き先、本文で確認したことを記録する。
Locationは、httpsから始まる完全なURLの場合と、/new-guide/のように同じサイトの中の場所を示す場合があります。短い場所の指定でも、開いた旧URLを基準に行き先が決まります。文字が違うだけで間違いと決めず、実際にどの完全URLへ進んだかを対応表と比べます。

表は横に動かして読めます。
| 見えた動き | 何が違うか | 担当へ渡す内容 |
|---|---|---|
| 旧URL→新URL | 直接、予定の答えへ進む | 番号・行き先・本文の確認結果 |
| 旧URL→途中のURL→新URL | 複数の転送を経由する(チェーン) | 実際に経由したURLと番号。最後の行き先へ直接案内できるか |
| 旧URL→新URL→旧URL→… | 戻り続ける(ループ) | 両方向のルールの可能性。URL・番号と困る範囲 |
| 旧URL→新URL、しかし答えがない | 番号と移動だけでは用事が終わらない | 新URLで足りない本文・表示・公開条件 |
Googleは、できるだけ最後の行き先へ直接転送するよう案内しています。途中の転送を増やすと、読者がページを読むまでの待ちも増えます。ループや関係ない行き先があるときは、ルールを次々に足さず、期待表と実際の経路を現在の管理担当へ渡してください。
以前の301をブラウザや配信側が覚えている場合もあります。設定を戻した直後に古い動きが見えても、変更が全く効いていないと即断しません。確認した日時・環境・キャッシュからの応答かを担当へ渡し、別の方法でも見てもらいます。
任意:自分のパソコンで、301とLocationを見てみる
実サイトを変更せず、本文のコードで旧301→新200を読む練習です。Python 3をすでに使える方だけが対象です。
作業用フォルダーを一つ作り、下のserver.pyのコードをテキストエディターへ写します。標準テキスト・UTF-8でserver.pyという名前で保存し、末尾が.py.txtになっていないか確かめてください。ターミナルでそのフォルダーへ移動します。別のHTMLファイルやREADMEは必要ありません。
python3 server.pyを実行してから、http://127.0.0.1:8769/old-guide/を開きます。127.0.0.1は自分のパソコンです。8769はこの学習サーバーを見つける番号(ポート番号)です。Python 3がない場合に、この練習のために本番やOSの設定を変更する必要はありません。
8769が他のアプリで使われていたら、そのアプリを止めません。空いている別の番号が分かる場合だけ、python3 server.py –port 8771のように指定し、開くURLもhttp://127.0.0.1:8771/old-guide/へそろえます。
Networkを先に開いてPreserve logを有効にし、旧URLの301とLocation=/new-guide/、新URLの200と準備の本文を見ます。/other/は転送しない案内で200、/missing/は404です。見本は正確なパスだけを扱い、/old-guide/?language=enのように?が付くURLは404になります。これは本番のクエリ対応を実装したコードではありません。
確認が終わったら、起動したターミナルでCtrl+Cを押して、この学習サーバーを終了します。これは自分のパソコン内のGET閲覧の見本で、WordPress・Apache・配信側の設定や実際の移転を確認した記録にはなりません。
表は横に動かして読めます。
| 開くパス | 期待する応答 | 本文と範囲 |
|---|---|---|
| /old-guide/ | 301、Location=/new-guide/ | 新URLへ案内する、本文は空 |
| /new-guide/ | 200 | 印刷依頼前の四つの準備項目 |
| /other/ | 200 | 転送対象ではない案内 |
| /missing/ | 404 | ページが見つからない |
| /old-guide/?language=en | 404 | クエリ付きURLはこの教材の対象外 |
server.pyのコードを見る
"""自分のパソコン内だけで使う、GET閲覧の学習見本。実サイトの転送設定ではありません。"""
import argparse
from http.server import BaseHTTPRequestHandler, HTTPServer
NEW_PAGE = """<!doctype html>
<html lang="ja">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>印刷依頼前の準備</title>
<style>body{max-width:42rem;margin:2rem auto;padding:0 1.2rem;font:18px/1.8 system-ui,sans-serif;color:#20363a}h1{font-size:1.7rem}li{margin:.4rem 0}aside{padding:1rem;background:#edf5f5}a{color:#076273}</style>
<h1>印刷依頼前の準備</h1>
<p>依頼の前に、次の内容を整理します。</p>
<ul><li>用紙サイズ</li><li>部数</li><li>希望時期</li><li>原稿の状態</li></ul>
<aside>説明用の架空案内です。実際の印刷の受付はありません。用紙や納期の対応可否は実際の店へ確認します。</aside>
</html>
"""
OTHER_PAGE = """<!doctype html><html lang="ja"><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>転送対象ではない案内</title><h1>転送対象ではない案内</h1>
<p>この学習例では、古い準備案内の転送を加えても、このページはそのまま表示します。</p></html>"""
MISSING_PAGE = """<!doctype html><html lang="ja"><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ページが見つかりません</title><h1>ページが見つかりません</h1>
<p>この学習例は正確なパスだけを扱います。クエリや実サイトの転送条件の実装例ではありません。</p></html>"""
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == "/old-guide/":
self.send_response(301)
self.send_header("Location", "/new-guide/")
self.send_header("Cache-Control", "no-store")
self.send_header("Content-Length", "0")
self.end_headers()
return
if self.path == "/new-guide/":
status, text = 200, NEW_PAGE
elif self.path == "/other/":
status, text = 200, OTHER_PAGE
else:
status, text = 404, MISSING_PAGE
body = text.encode("utf-8")
self.send_response(status)
self.send_header("Content-Type", "text/html; charset=utf-8")
self.send_header("Cache-Control", "no-store")
self.send_header("Content-Length", str(len(body)))
self.end_headers()
self.wfile.write(body)
def main():
parser = argparse.ArgumentParser(description="127.0.0.1だけで動かす、GETの301学習例")
parser.add_argument("--port", type=int, default=8769, help="空いているポート番号(既定8769)")
args = parser.parse_args()
if not 1024 <= args.port <= 65535:
parser.error("ポート番号は1024から65535の範囲を指定してください。")
try:
server = HTTPServer(("127.0.0.1", args.port), Handler)
except OSError:
parser.exit(1, "起動できません。番号が使用中なら他のアプリを止めず、空いている別の番号を --port で指定してください。\n")
print(f"http://127.0.0.1:{args.port}/old-guide/ を開きます。終了はこのターミナルでCtrl+C。", flush=True)
try:
server.serve_forever()
except KeyboardInterrupt:
print("\n学習サーバーを終了します。", flush=True)
finally:
server.server_close()
if __name__ == "__main__":
main()
05
制作会社へ、何を渡せばよい?
設定する前に、管理場所・戻す担当・リンクの更新を決める
要点旧新URLの一組、読める答え、期待する動き、未確認の点を渡します。現在の設定を管理する人に、保存・確認・戻す方法を相談します。
転送は、WordPressの機能、サーバーの設定、配信サービスの設定など、いくつかの場所で動くことがあります。先に現在の管理担当へ「この古いURLの転送はどこで管理していますか」と聞きます。同じ移転を別の場所にも重ねると、意図しない途中の移動や往復を作る場合があります。

表は横に動かして読めます。
| 確かめること | 用意する資料 | 聞く相手・依頼すること |
|---|---|---|
| 古い案内と新しい答えの対応 | 旧URL・読む目的・新URL・残る準備項目 | 内容を決める担当。行き先が同じ用事に答えるか |
| 転送を管理する場所 | 既存の転送一覧と管理方法 | サイト/サーバーの管理担当。追加する場所を一つ決める |
| 変更前の保存と戻す方法 | 現在の設定と、サイト復旧に必要な保存 | 復旧できる担当。問題が出たとき誰がどこへ戻すか |
| 公開後の確認 | 期待するURL・番号・本文・対象外のページ | 確認担当。確認した範囲と未確認を残す |
| 古い参照の更新と転送の維持 | 内部リンク・サイトマップ・転送の一覧 | 管理担当。新URLへの更新と長く案内を保つ役割 |
WordPressのサイトなら、復旧にデータベースとファイルの両方が関係します。転送の一覧を書き出しただけで、サイト全体を戻せる保存ができたとは限りません。どの保存を誰が使うか、担当の権限と方法を変更前に確認します。
WordPressで1組を入力する手順は「WordPressで301リダイレクトを設定する方法」へ、Apacheで許可された.htaccessの一つのHTMLを移す見本は「.htaccessで301リダイレクトする方法」へ進めます。.htaccessはサーバー側の許可が必要で、全ての環境で使える設定ではありません。現在の環境が分からなければ、方式を選ぶ前に管理担当へ聞いてください。
転送があっても、サイト内のリンクは新しいURLへ直します。サイトマップという、検索エンジンへページ一覧を伝えるファイルも新URLへそろえます。新ページが検索に出るのを止めるnoindexの設定や、優先するURLを示すcanonicalが古いままでないかも、管理担当が確認します。
Googleのサイト移転資料は、転送をできるだけ長く、一般に少なくとも1年保つよう案内しています。1年たてば外してよいという意味ではありません。古いメールや外部のリンクを使う人がいることも考え、維持する担当と費用・契約を決めます。
06
今日、どこから始めればよい?
まとめ:古い案内1ページと、新しい行き先を整理しよう
要点古いURL、読む目的、新しいURLと残る答えを書きます。分からないところは未確認にして、現在の管理担当へ聞く内容にします。
301の準備で大切なのは、番号を選ぶだけでなく、古いページを読む人が同じ答えへたどり着けることです。戻す予定のない移転なら同じ答えの新URLへ案内し、設定後に301・行き先・最後の本文を確かめます。
今日の作業は、古いメールに載った案内を1ページ選ぶことから。古いURLを開き、読む目的を書き、新しい案内にその答えがあるかを比べてください。新しい行き先が決まらないなら、無関係なトップへ埋めず、未確認として内容を決める担当へ渡します。

たとえば、古い案内が「印刷依頼前に準備するもの」を答えていたなら、新しい行き先にも用紙サイズ・部数・希望時期・原稿の状態が必要です。図の例のように、行き先の内容と、まだ担当へ聞いていないことを分けます。準備した文章を、設定や動作を確認した結果として扱いません。
制作会社や管理担当へは、旧URL・読む目的・新URLと残る答えに、変更の種類、期待する動き、未確認を添えて渡します。現在の設定場所、保存、問題時に戻す担当を一緒に確認できれば、「301をお願いしたい」から具体的な作業の相談へ進めます。
DREEXYへ相談する場合は、公開されている旧新URLと、行き先を選べない理由や確認結果の違いをまとめてください。秘密のURL、ログイン情報、個人情報は書かず、必要な資料の種類と担当の役割で伝えます。対応範囲と費用は相談時に確認します。
根拠を確かめたい方へ
- HTTPの返事と301・302の意味|RFC 9110
GET、移転先、301・302・307・308、404・410の通信上の意味。
- リダイレクトとGoogle検索|Google 検索セントラル
永続的な移転と一時的な案内、GoogleのURLの扱い。
- URLを変更するサイト移転|Google 検索セントラル
旧新URLの対応、直接の行き先、内部リンクとサイトマップ、転送の維持期間。
- HTTPの返事とGoogleの処理|Google公式
200の本文と検索登録を分けること、soft 404の扱い。
- 通信の記録と情報の読み方|Chrome DevTools公式
Networkの記録を残し、番号と受け取った情報を見る。
- WordPressの保存と復旧に必要なもの|WordPress公式
サイトを戻すにはデータベースとファイルが必要。
- .htaccessの配置と許可|Apache公式
Apacheのディレクトリ別設定と、サーバー側の許可。
基本資料の確認日:2026-10-13。2026-10-21にGoogleの転送区分とChromeの通信情報の読み方を追加確認しました。実サイトの移転や検索結果を測定した記録ではありません。
仕事の流れから、顧客との接点まで。
一体で見直す、最初の一歩を。


