



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒サイトをリニューアルして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リダイレクトとは、古いURLにアクセスしたユーザーとクローラー(検索エンジンのロボット)を「恒久的に新しいURLへ自動転送する」仕組みです。


【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へ引き継ぐ| メリット | 内容 | 設定しなかった場合 |
|---|---|---|
| SEO評価(被リンク)を引き継げる | 古いURLに蓄積した被リンクや検索ランキングシグナルをほぼそのまま新URLへ移行できる | 積み上げた評価がゼロになり、新URLでまたイチから始まる |
| ユーザーを404エラーで迷わせない | 古いURLへアクセスした人を自動転送し、エラーページを見せずに目的コンテンツへ誘導できる | 「404 Not Found」が表示され、サイト離脱・ブランドイメージ低下につながる |
リダイレクトには「301」と「302」の2種類があります。「恒久的な移転かどうか」という1点の違いですが、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が残り、正しく動かないことがあるWeb制作・サイト運営でよく遭遇する5つのシーンと、それぞれのリダイレクト設定例を紹介します。


セキュリティ向上のためHTTPからHTTPSへ切り替える際、リダイレクト設定をしないと古いHTTPのURLで被リンクの評価が残ったままになります。
# .htaccess での設定例
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]「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]カテゴリ構造の変更や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]ブランドリニューアルや企業統合などでドメインそのものが変わる場合、旧ドメインのすべてのURLを新ドメインへ転送します。
# 旧ドメイン全体を新ドメインへ(.htaccess)
RewriteEngine On
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]# /index.html を / に統一する
RewriteEngine On
RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]
# 末尾スラッシュなしをスラッシュありに統一(ディレクトリの場合)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /$1/ [R=301,L]WordPressで301リダイレクトを設定するには、プラグインを使う方法と、.htaccessを直接編集する方法の2つがあります。


【WordPressでの設定方法の選び方】
プラグイン(Redirection)がおすすめなケース:
✅ 技術的な知識に自信がない
✅ 管理画面からリダイレクト一覧を確認・管理したい
✅ 数十〜数百件のリダイレクトを効率よく設定したい
✅ 設定ミスで画面が真っ白になるリスクを避けたい
.htaccess 直接編集がおすすめなケース:
✅ プラグインを極力入れたくない(表示速度の最適化)
✅ サーバーレベルで確実に処理したい
✅ HTTP→HTTPS・www統一などサイト全体に関わる設定を行いたい「Redirection」は国内外で最も広く使われているWordPressのリダイレクト管理プラグインです。インストール数は400万以上を誇ります。
/old-page/)を入力/new-page/)を入力【Redirectionプラグインの設定項目】
ソースURL: /old-category/old-article/
ターゲットURL:https://example.com/new-category/new-article/
HTTPコード: 301(デフォルト。変更不要)
▶ ソースURLは「相対パス」で入力する(ドメインは不要)
▶ ターゲットURLは「絶対URL」でも「相対パス」でも OK
▶ 正規表現(.*)を使えば複数URLをまとめて転送することも可能プラグインを使わずに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はApacheサーバーの設定ファイルです。WordPressのルートディレクトリ(public_html/)に存在し、サーバーレベルでリダイレクトを処理するため処理速度が速いのが特長です。


【.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# # 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への転送に使う
# ※ 同じドメイン内なら相対パスでも可# # 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ではなく302になっていたり、リダイレクトループが起きていたりするケースがあります。


1. ブラウザのアドレスバーに古いURLを入力してEnter
2. 自動的に新しいURLへ遷移すれば転送は機能している
3. ブラウザの開発者ツール(F12)→「Network」タブで
古いURLの Status が「301」と表示されているか確認する
確認ポイント:
✅ Status: 301(Moved Permanently)
✅ Location ヘッダーに新URLが表示されている
❌ Status: 302 → 設定を見直す(htaccessのR=301を確認)
❌ Status: 200 → リダイレクトされていない(設定が効いていない)無料のオンラインツールを使うと、ステータスコードの確認・リダイレクトチェーン(数珠つなぎ)の確認・レスポンスヘッダーの確認がブラウザだけより詳しくできます。
【おすすめのリダイレクト確認ツール】
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)が発生していない1. Google Search Console にアクセス
2. 「URL検査」で旧URLを検索して「Googleのインデックスカバレッジ」を確認
→ 「リダイレクトされたURL」と表示されれば Google が認識している
3. 新URLも「URL検査」して「インデックスに登録済み」を確認する
反映の目安:
→ Googleが301を認識して新URLへSEO評価を移すまで数週間〜数ヶ月かかる
→ Search Console の「URL検査」で「クロールをリクエスト」すると早まる場合がある301リダイレクトを設定する際によくあるNG設定を3つ紹介します。これらは設定の有無より「設定の仕方の誤り」によるものがほとんどです。


【リダイレクトチェーンとは】
❌ 問題のある状態:
URL-A → URL-B → URL-C
→ Googleは途中を経由するたびに評価の引き継ぎ精度が下がる
→ ユーザーの読み込み時間も遅くなる
→ 3回以上の連鎖があるとGoogleがクロールを止める場合がある
✅ 正しい設定:
URL-A → URL-C(最終目的地に直接転送)
URL-B → URL-C(すべて最終URLへ直接転送)
対処法:
→ ツール(httpstatus.io など)でチェーンが発生していないか確認する
→ リダイレクト設定一覧を定期的に見直して古い設定を整理する【リダイレクトループとは】
❌ 問題のある状態:
URL-A → URL-B → URL-A → URL-B → ...(無限ループ)
→ ブラウザが「リダイレクトの回数が多すぎます」エラーを表示する
→ サイトにアクセスできなくなる
→ 検索エンジンのクロールが止まり、インデックスが消える可能性がある
よくある原因:
→ HTTP→HTTPS の設定と、すでに設定されているHTTPS→HTTPの設定が競合する
→ www統一の設定と、既存のwww転送設定が競合する
対処法:
→ 設定後に必ずブラウザで確認する(「リダイレクトが多すぎます」が出たら即確認)
→ .htaccess のルールの順序と条件(RewriteCond)を見直す【全URL一括転送はSEOにマイナス】
❌ 問題のある設定(サイトリニューアル時によくあるミス):
サイト内の全ページ → トップページのみへ一括リダイレクト
→ Googleは「コンテンツが消えた」と判断する
→ 個々のページが持つSEO評価・被リンクがすべて失われる
→ "Soft 404" として処理されることがある
✅ 正しい設定:
旧記事ページ-A → 新記事ページ-A(内容的に対応するページへ1対1で転送)
旧記事ページ-B → 新記事ページ-B
※ 本当に対応するページがない場合のみ、トップやカテゴリページへ転送する
(それでも /old-category/* → /new-category/ のように絞る)Googleの公式見解では、301リダイレクトによる評価の引き継ぎはほぼ同等(ほぼ100%)としています。ただしGoogleが新URLをクロール・インデックスするまでに数週間〜数ヶ月かかるため、設定直後に順位が下がることは正常です。Search Consoleで「クロールをリクエスト」すると処理が早まる場合があります。また、コンテンツの類似性が低いリダイレクトは評価が引き継がれにくい場合があります。
自動では設定されません。WordPressのパーマリンク設定を変更すると、新しいURLでページが生成されますが、古いURLから新URLへのリダイレクトは自動では行われません。パーマリンクを変更した場合は、必ず「Redirection」プラグインや.htaccessで旧URL → 新URLのリダイレクトを手動で設定してください。
.htaccessの構文エラーによる500エラーです。バックアップしておいた .htaccess を元に戻すことで解決します。FTPでサーバーにアクセスし、バックアップファイルを .htaccess という名前でアップロードしてください。バックアップがない場合は、WordPressのデフォルト .htaccess(# BEGIN WordPress〜# END WordPressの内容)で上書きすれば基本的には復旧します。
基本的には外さない方が安全です。外部サイトからの被リンクは古いURLを指している場合が多く、リダイレクトを外すと再び404エラーになってしまいます。サーバーの負荷が心配な場合でも、設定から1〜2年経過し、Google Search Consoleで古いURLへのクロールがほぼゼロになってから外すかどうかを検討してください。
# 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リダイレクトはサイトリニューアル・ドメイン移転で積み上げてきたSEO評価を守る最重要設定です。設定前に必ずバックアップを取り、設定後は動作確認を徹底してください。


副業・フリーランスが主流になっている今こそ、自らのスキルで稼げる人材を目指してみませんか?
未経験でも心配することはありません。初級コースを受講される方の大多数はプログラミング未経験です。まずは無料カウンセリングで、悩みや不安をお聞かせください!
公式サイト より
今すぐ
無料カウンセリング
を予約!