WithCodeMedia-1-pc
previous arrowprevious arrow
next arrownext arrow

WithCodeMedia-1-sp
previous arrowprevious arrow
next arrownext arrow

301リダイレクトの設定方法【WordPress・.htaccess対応】|SEO評価を引き継ぐ完全ガイド

この記事でわかること

  • 301リダイレクトの仕組みとSEO評価が引き継がれる理由
  • 301と302の違いと正しい使い分け基準
  • WordPressでの設定方法(Redirectionプラグイン・functions.php・.htaccess)
  • 設定後の動作確認3ステップとおすすめ確認ツール
  • リダイレクトチェーン・ループ・一括転送のNG設定と対処法
生徒

サイトをリニューアルしてURLが変わったら、検索順位がガクッと落ちてしまいました。301リダイレクトを設定すれば元に戻るって聞いたんですが、どうやって設定すればいいですか?

ペン博士

よーく聞くんだぞ。301リダイレクトはSEO評価を引き継ぐ「住所変更の届出」じゃ。正しく設定すれば、古いURLに蓄積した被リンクや検索エンジンの評価をほぼそのまま新しいURLへ移せるんじゃ。今日はWordPressとhtaccessによる設定方法・302との違い・NG設定まで、コード付きで徹底解説するぞい!

サイトリニューアルやドメイン変更・HTTPS化・URL構造の見直しなど、Webサイトを運営していればURLが変わる場面は必ず訪れます。301リダイレクトを設定せずにURLを変えると、それまで積み上げてきた検索評価や被リンクの効果がゼロにリセットされ、順位の大幅な下落につながります。

適切な301リダイレクト設定なしにドメインを移転したサイトでは、移転前の順位に戻るまで6ヶ月〜1年かかるケースも珍しくありません。一方、正しく設定すれば数週間〜数ヶ月でGoogleが新URLへの評価を引き継ぎ、順位の回復が見込めます。

本記事では、301リダイレクトの仕組みと302との違い・必要な5つのシーン・WordPressでの設定方法(プラグイン・.htaccess)・確認方法・やってはいけないNG設定3つをコード付きで完全解説します。


目次

301リダイレクトとは何か|仕組みと2つのメリット

301リダイレクトとは、古いURLにアクセスしたユーザーとクローラー(検索エンジンのロボット)を「恒久的に新しいURLへ自動転送する」仕組みです。

301リダイレクトの仕組みとSEO評価の引き継ぎを示す概念図

301リダイレクトが動く仕組み

【301リダイレクトの通信フロー】

① ユーザー(またはGooglebot)が古いURLにアクセス
   https://example.com/old-page/

② サーバーが「301 Moved Permanently」を返す
   ステータスコード 301 + Location: https://example.com/new-page/

③ ブラウザ / Googlebot が自動的に新しいURLへアクセス
   https://example.com/new-page/

④ 新しいページが表示される

▶ ユーザーは一瞬で転送されるため、古いURLをブックマークしていても問題ない
▶ Googleはこの転送を「恒久的な移転」と判断し、SEO評価を新URLへ引き継ぐ

301リダイレクトの2つのメリット

メリット内容設定しなかった場合
SEO評価(被リンク)を引き継げる古いURLに蓄積した被リンクや検索ランキングシグナルをほぼそのまま新URLへ移行できる積み上げた評価がゼロになり、新URLでまたイチから始まる
ユーザーを404エラーで迷わせない古いURLへアクセスした人を自動転送し、エラーページを見せずに目的コンテンツへ誘導できる「404 Not Found」が表示され、サイト離脱・ブランドイメージ低下につながる

301と302リダイレクトの違い|SEO評価の引き継ぎに決定的な差がある

リダイレクトには「301」と「302」の2種類があります。「恒久的な移転かどうか」という1点の違いですが、SEO評価の引き継ぎに大きな差が生まれます。

301リダイレクトと302リダイレクトのSEO効果の違いを示す比較図
種類意味SEO評価の引き継ぎ検索結果の表示使うシーン
301恒久的な移転(Moved Permanently)あり(ほぼ全量)新しいURLに更新されるURL変更・ドメイン移転・SSL化・リニューアル
302一時的な移転(Found / Moved Temporarily)限定的・遅い古いURLが残ることがあるメンテナンス中・ABテスト・期間限定キャンペーン
【301と302の使い分け基準】

✅ 301を使うべきケース:
→ 元のURLに二度と戻さない(恒久的な変更)
→ サイトリニューアル・ドメイン変更・HTTPS化
→ URLの正規化(www有無・index.htmlの統一)

✅ 302を使うべきケース:
→ 一定期間後に元のURLに戻す予定がある
→ サーバーメンテナンス中の一時的な代替ページ
→ ABテストで一部ユーザーを別ページに誘導する

❌ よくある間違い:
→ 「とりあえず302にする」
   → Googleが永続的な移転と判断しづらく、評価が引き継がれにくい
→ 「後で301に直せばいい」
   → ブラウザキャッシュに302が残り、正しく動かないことがある

301リダイレクトが必要な5つのシーン

Web制作・サイト運営でよく遭遇する5つのシーンと、それぞれのリダイレクト設定例を紹介します。

301リダイレクトが必要な5つのシーンを示すフロー図

シーン1:HTTP → HTTPS化(常時SSL化)

セキュリティ向上のためHTTPからHTTPSへ切り替える際、リダイレクト設定をしないと古いHTTPのURLで被リンクの評価が残ったままになります。

# .htaccess での設定例
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

シーン2:www あり・なしの統一(正規URL化)

www.example.com」と「example.com」の両方が存在すると、Googleが別のURLとして扱い評価が分散します。どちらかに統一することが重要です。

# www なしに統一する場合(.htaccess)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# www ありに統一する場合(.htaccess)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

シーン3:サイトリニューアルでURLが変わった

カテゴリ構造の変更やWordPressのパーマリンク変更などで個別のページURLが変わった場合、ページごとに旧URL → 新URLのリダイレクトを設定します。

# 旧URL → 新URL(ページ単位の例)
Redirect 301 /old-category/article-name/ https://example.com/new-category/article-name/

# 旧カテゴリ以下をまとめて新カテゴリへ
RewriteEngine On
RewriteRule ^old-category/(.*)$ /new-category/$1 [R=301,L]

シーン4:ドメイン変更・移転

ブランドリニューアルや企業統合などでドメインそのものが変わる場合、旧ドメインのすべてのURLを新ドメインへ転送します。

# 旧ドメイン全体を新ドメインへ(.htaccess)
RewriteEngine On
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]

シーン5:末尾スラッシュ・index.htmlの統一

# /index.html を / に統一する
RewriteEngine On
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]

# 末尾スラッシュなしをスラッシュありに統一(ディレクトリの場合)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /$1/ [R=301,L]

WordPressでの301リダイレクト設定方法|プラグインと手動の2パターン

WordPressで301リダイレクトを設定するには、プラグインを使う方法と、.htaccessを直接編集する方法の2つがあります。

WordPressで301リダイレクトを設定する2パターンの比較図
【WordPressでの設定方法の選び方】

プラグイン(Redirection)がおすすめなケース:
✅ 技術的な知識に自信がない
✅ 管理画面からリダイレクト一覧を確認・管理したい
✅ 数十〜数百件のリダイレクトを効率よく設定したい
✅ 設定ミスで画面が真っ白になるリスクを避けたい

.htaccess 直接編集がおすすめなケース:
✅ プラグインを極力入れたくない(表示速度の最適化)
✅ サーバーレベルで確実に処理したい
✅ HTTP→HTTPS・www統一などサイト全体に関わる設定を行いたい

方法1:プラグイン「Redirection」を使う(推奨)

Redirection」は国内外で最も広く使われているWordPressのリダイレクト管理プラグインです。インストール数は400万以上を誇ります。

  1. WordPress管理画面 → 「プラグイン」→「新規追加」で「Redirection」を検索
  2. 「今すぐインストール」→「有効化」をクリック
  3. 「ツール」→「Redirection」→「セットアップ」をクリックして初期設定を完了
  4. 「リダイレクト」タブで「新しいリダイレクトを追加」ボタンをクリック
  5. 「ソースURL」に旧URL(例:/old-page/)を入力
  6. 「ターゲットURL」に新URL(例:/new-page/)を入力
  7. 「HTTPコード」が「301」になっていることを確認して「リダイレクトを追加」をクリック
【Redirectionプラグインの設定項目】

ソースURL:    /old-category/old-article/
ターゲットURL:https://example.com/new-category/new-article/
HTTPコード:   301(デフォルト。変更不要)

▶ ソースURLは「相対パス」で入力する(ドメインは不要)
▶ ターゲットURLは「絶対URL」でも「相対パス」でも OK
▶ 正規表現(.*)を使えば複数URLをまとめて転送することも可能

方法2:functions.phpで301リダイレクトを設定する

プラグインを使わずにWordPressのコードで設定する場合は、functions.php に記述します。少数のリダイレクトを軽量に管理したい場合に向いています。

// functions.php に追記する
add_action('template_redirect', function () {
    // 旧URL → 新URLへ301リダイレクト
    $redirects = [
        '/old-category/old-article-1/' => '/new-category/new-article-1/',
        '/old-category/old-article-2/' => '/new-category/new-article-2/',
        '/old-page/'                   => '/new-page/',
    ];

    $current_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

    if (array_key_exists($current_path, $redirects)) {
        // wp_redirect は WordPress 推奨の安全なリダイレクト関数
        wp_redirect(home_url($redirects[$current_path]), 301);
        exit;
    }
});

.htaccessで301リダイレクトを設定する方法(Apache)

.htaccessはApacheサーバーの設定ファイルです。WordPressのルートディレクトリ(public_html/)に存在し、サーバーレベルでリダイレクトを処理するため処理速度が速いのが特長です。

.htaccessで301リダイレクトを設定する方法の解説図

.htaccessの場所とバックアップ

【.htaccessの場所と操作手順】

場所:WordPress のインストールディレクトリ(通常は public_html/)
    FTPソフト(FileZilla など)または
    サーバーのファイルマネージャーでアクセスする

操作前の必須手順:
1. .htaccess をローカルにダウンロードしてバックアップを取る
   → 設定ミスで画面が真っ白(500エラー)になったとき元に戻せる
2. バックアップファイル名:.htaccess_backup_YYYYMMDD など

WordPressのデフォルト .htaccess の内容:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

基本:特定ページの301リダイレクト

# # BEGIN WordPress の上に追記する

# 1ページずつ転送する(Redirect ディレクティブ)
Redirect 301 /old-page/ https://example.com/new-page/
Redirect 301 /old-category/old-article/ https://example.com/new-category/new-article/

# ※ Redirect はフルURLへの転送に使う
# ※ 同じドメイン内なら相対パスでも可

応用:正規表現でまとめて転送する(RewriteRule)

# # BEGIN WordPress の上に追記する

<IfModule mod_rewrite.c>
RewriteEngine On

# HTTP → HTTPS へ全転送
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# www あり → www なしへ統一
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

# 旧カテゴリ以下をまとめて新カテゴリへ転送
RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L]

</IfModule>
【.htaccess の RewriteRule の書き方の基本】

書式:
RewriteRule [転送元パターン] [転送先URL] [フラグ]

主なフラグ:
R=301    → 301リダイレクト(必須)
L        → このルールで処理を終了(Lastの意味)
NC       → 大文字・小文字を区別しない(No Caseの意味)

よく使うパターン:
^(.*)$   → すべてのパスにマッチする(キャプチャグループ)
$1       → マッチした部分を転送先で使う

具体例:
RewriteRule ^old-blog/(.*)$ /new-blog/$1 [R=301,L]
→ /old-blog/anything/ を /new-blog/anything/ へ転送

301リダイレクトの確認方法|設定が正しく動いているかチェックする3つの手順

設定後は必ず正しく動いているかを確認します。確認を怠ると、301ではなく302になっていたり、リダイレクトループが起きていたりするケースがあります。

301リダイレクトの動作確認3ステップの手順図

確認方法1:ブラウザの開発者ツールで確認する

1. ブラウザのアドレスバーに古いURLを入力してEnter
2. 自動的に新しいURLへ遷移すれば転送は機能している
3. ブラウザの開発者ツール(F12)→「Network」タブで
   古いURLの Status が「301」と表示されているか確認する

確認ポイント:
✅ Status: 301(Moved Permanently)
✅ Location ヘッダーに新URLが表示されている
❌ Status: 302 → 設定を見直す(htaccessのR=301を確認)
❌ Status: 200 → リダイレクトされていない(設定が効いていない)

確認方法2:リダイレクトチェックツールを使う

無料のオンラインツールを使うと、ステータスコードの確認・リダイレクトチェーン(数珠つなぎ)の確認・レスポンスヘッダーの確認がブラウザだけより詳しくできます。

【おすすめのリダイレクト確認ツール】

1. httpstatus.io
   URL: https://httpstatus.io/
   → URLを入力するとステータスコード・リダイレクト先・レスポンスヘッダーを表示
   → 一括チェックも可能

2. Redirect Checker
   URL: https://www.redirect-checker.org/
   → リダイレクトの連鎖(チェーン)を視覚的に表示してくれる
   → リダイレクトループの発見に便利

3. Googleサーチコンソールのカバレッジレポート
   → インデックスされているURLと「リダイレクト済み」の状態を確認できる
   → 新URLが正しくインデックスされているかの最終確認に使う

確認すべき項目:
✅ ステータスコードが 301
✅ Location ヘッダーが正しい新URL
✅ リダイレクトチェーン(A→B→C)が発生していない
✅ リダイレクトループ(A→B→A)が発生していない

確認方法3:Google Search Consoleで確認する

1. Google Search Console にアクセス
2. 「URL検査」で旧URLを検索して「Googleのインデックスカバレッジ」を確認
   → 「リダイレクトされたURL」と表示されれば Google が認識している
3. 新URLも「URL検査」して「インデックスに登録済み」を確認する

反映の目安:
→ Googleが301を認識して新URLへSEO評価を移すまで数週間〜数ヶ月かかる
→ Search Console の「URL検査」で「クロールをリクエスト」すると早まる場合がある

やってはいけないNG設定3つ|SEO評価を損なうリダイレクトの落とし穴

301リダイレクトを設定する際によくあるNG設定を3つ紹介します。これらは設定の有無より「設定の仕方の誤り」によるものがほとんどです。

301リダイレクトのやってはいけないNG設定3つを解説する図

NG1:リダイレクトチェーン(数珠つなぎ)

【リダイレクトチェーンとは】

❌ 問題のある状態:
URL-A → URL-B → URL-C

→ Googleは途中を経由するたびに評価の引き継ぎ精度が下がる
→ ユーザーの読み込み時間も遅くなる
→ 3回以上の連鎖があるとGoogleがクロールを止める場合がある

✅ 正しい設定:
URL-A → URL-C(最終目的地に直接転送)
URL-B → URL-C(すべて最終URLへ直接転送)

対処法:
→ ツール(httpstatus.io など)でチェーンが発生していないか確認する
→ リダイレクト設定一覧を定期的に見直して古い設定を整理する

NG2:リダイレクトループ(無限ループ)

【リダイレクトループとは】

❌ 問題のある状態:
URL-A → URL-B → URL-A → URL-B → ...(無限ループ)

→ ブラウザが「リダイレクトの回数が多すぎます」エラーを表示する
→ サイトにアクセスできなくなる
→ 検索エンジンのクロールが止まり、インデックスが消える可能性がある

よくある原因:
→ HTTP→HTTPS の設定と、すでに設定されているHTTPS→HTTPの設定が競合する
→ www統一の設定と、既存のwww転送設定が競合する

対処法:
→ 設定後に必ずブラウザで確認する(「リダイレクトが多すぎます」が出たら即確認)
→ .htaccess のルールの順序と条件(RewriteCond)を見直す

NG3:全URLを1つのURLに集約してしまう

【全URL一括転送はSEOにマイナス】

❌ 問題のある設定(サイトリニューアル時によくあるミス):
サイト内の全ページ → トップページのみへ一括リダイレクト

→ Googleは「コンテンツが消えた」と判断する
→ 個々のページが持つSEO評価・被リンクがすべて失われる
→ "Soft 404" として処理されることがある

✅ 正しい設定:
旧記事ページ-A → 新記事ページ-A(内容的に対応するページへ1対1で転送)
旧記事ページ-B → 新記事ページ-B

※ 本当に対応するページがない場合のみ、トップやカテゴリページへ転送する
  (それでも /old-category/* → /new-category/ のように絞る)

よくある質問(FAQ)

Q1. 301リダイレクトを設定すると、SEO評価はどのくらい引き継がれますか?

Googleの公式見解では、301リダイレクトによる評価の引き継ぎはほぼ同等(ほぼ100%)としています。ただしGoogleが新URLをクロール・インデックスするまでに数週間〜数ヶ月かかるため、設定直後に順位が下がることは正常です。Search Consoleで「クロールをリクエスト」すると処理が早まる場合があります。また、コンテンツの類似性が低いリダイレクトは評価が引き継がれにくい場合があります。

Q2. WordPressのパーマリンク設定を変更しただけで301リダイレクトは自動で設定されますか?

自動では設定されません。WordPressのパーマリンク設定を変更すると、新しいURLでページが生成されますが、古いURLから新URLへのリダイレクトは自動では行われません。パーマリンクを変更した場合は、必ず「Redirection」プラグインや.htaccessで旧URL → 新URLのリダイレクトを手動で設定してください。

Q3. .htaccessを編集したら画面が真っ白になりました。どうすれば直りますか?

.htaccessの構文エラーによる500エラーです。バックアップしておいた .htaccess を元に戻すことで解決します。FTPでサーバーにアクセスし、バックアップファイルを .htaccess という名前でアップロードしてください。バックアップがない場合は、WordPressのデフォルト .htaccess(# BEGIN WordPress〜# END WordPressの内容)で上書きすれば基本的には復旧します。

Q4. 301リダイレクトをいつか外してもいいですか?

基本的には外さない方が安全です。外部サイトからの被リンクは古いURLを指している場合が多く、リダイレクトを外すと再び404エラーになってしまいます。サーバーの負荷が心配な場合でも、設定から1〜2年経過し、Google Search Consoleで古いURLへのクロールがほぼゼロになってから外すかどうかを検討してください。

Q5. Nginx サーバーでの301リダイレクトはどう設定しますか?

# Nginx の場合(nginx.conf または server ブロック内)
server {
    listen 80;
    server_name example.com;

    # HTTP → HTTPS への301リダイレクト
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;

    # 特定ページの301リダイレクト
    location = /old-page/ {
        return 301 /new-page/;
    }

    # 旧カテゴリ以下をまとめて新カテゴリへ
    location ^~ /old-blog/ {
        rewrite ^/old-blog/(.*)$ /new-blog/$1 permanent;
        # permanent = 301リダイレクト
    }
}

生徒

301リダイレクトの設定方法はわかりました!でもリダイレクトを設定したのに順位がなかなか戻らないのですが、待つしかないですか?

ペン博士

基本的には待つことになるんじゃが、Google Search Consoleの「URL検査」で新URLを1つずつ「クロールをリクエスト」しておくと早まることがあるんじゃ。それに加えて、サイトマップを再送信して新URLを一覧でGoogleに知らせると良いぞ。WithCodeでSEOやWeb制作の基礎を学ぶと、こうしたトラブル対応も自分でできるようになるんじゃ!

生徒

なるほど!Search Consoleでクロールリクエストすれば早まるんですね。サイトマップの再送信もやってみます!


まとめ

  • 301の本質:古いURLへのアクセスを新URLへ恒久的に転送し、SEO評価(被リンク・検索ランキング)をほぼそのまま引き継げる。302は一時的な転送のため、URLが永続的に変わる場合は必ず301を使う。
  • 301が必要な5つのシーン:HTTPS化・www統一・リニューアル時のURL変更・ドメイン移転・末尾スラッシュ統一。いずれのケースも設定を怠るとSEO評価が失われる。
  • WordPressでの設定方法:Redirectionプラグインが最も安全・簡単。functions.phpは少数のリダイレクトに、.htaccess直接編集はサイト全体設定(HTTPS化・www統一)に向いている。
  • 確認方法3つ:ブラウザの開発者ツール(ステータス301を目視確認)→ httpstatus.ioなどのツール(チェーン・ループ確認)→ Google Search Console(インデックス状態確認)の順で行う。
  • NG設定3つ:リダイレクトチェーン(A→B→C)・リダイレクトループ(A→B→A)・全URLをトップページへ一括転送は絶対に避ける。1対1の対応URLへ直接転送するのが原則。
  • 反映期間と対応:Googleが新URLへ評価を移すまで数週間〜数ヶ月。Search ConsoleでクロールリクエストとXMLサイトマップの再送信で加速できる。

301リダイレクトはサイトリニューアル・ドメイン移転で積み上げてきたSEO評価を守る最重要設定です。設定前に必ずバックアップを取り、設定後は動作確認を徹底してください


関連記事


参考リンク(公式・一次情報)


WithCodeを体験できる初級コース公開中!

初級コース(¥49,800)が完全無料に!

  • 期間:1週間
  • 学習内容:
    ロードマップ/基礎知識/環境構築/HTML/CSS/LP・ポートフォリオ作成
    正しい学習方法で「確かな成長」を実感できるカリキュラム。

副業・フリーランスが主流になっている今こそ、自らのスキルで稼げる人材を目指してみませんか?

未経験でも心配することはありません。初級コースを受講される方の大多数はプログラミング未経験です。まずは無料カウンセリングで、悩みや不安をお聞かせください!

この記事を書いた人

WithCode(ウィズコード)は「目指すなら稼げる人材」をビジョンに、累計400名以上のフリーランスを輩出してきた超実践型プログラミングスクールです。150社以上の実案件支援を特徴にWeb制作・Webデザインなどの役立つ情報を現場のノウハウに基づいて発信していきます。

– service –WithGroupの運営サービス

  • WithCode
    - ウィズコード -

    スクール

    「未経験」から
    現場で通用する
    スキルを身に付けよう!

    詳細はこちら
  • WithFree
    - ウィズフリ -

    実案件サポート

    制作会社のサポート下で
    実務経験を積んでいこう!

    詳細はこちら
  • WithCareer
    - ウィズキャリ -

    就転職サポート

    大手エージェントのサポート下で
    キャリアアップを目指そう!

    詳細はこちら

公式サイト より
今すぐ
無料カウンセリング
予約!

目次