🔀 移行パターン④ URL変更あり 301リダイレクト必須

WordPressサブドメイン・サブディレクトリ
間の移行完全手順

blog.example.comからexample.com/blog/へ、example.com/blog/からexample.com/へといったサブドメイン・サブディレクトリ間の移行手順を4パターン対応で解説します。URLが変わるため301リダイレクトとDB内のURL一括置換が必要です。

難易度
⭐⭐⭐☆☆
所要時間
2〜4時間
SEO影響
一時的な変動
URL変更
あり(全URL)
301設定
必須

📋 目次

🗂️ 1. 移行パターンの種類と特徴

自分の状況に合ったパターンを確認してから手順に進んでください。

🔀
パターンA:サブドメイン → サブディレクトリ
blog.example.com/example.com/blog/
ブログをサブドメインから本サイトのサブディレクトリに統合。SEO評価をメインドメインに集約できます。
⬆️
パターンB:サブディレクトリ → ルート
example.com/blog/example.com/
サブディレクトリ運用からルートドメインに昇格するパターン。WordPress設定ファイルの書き換えが必要です。
⬇️
パターンC:ルート → サブディレクトリ
example.com/example.com/blog/
コーポレートサイトをルートに追加したため既存ブログをサブディレクトリに移動するパターン。
🏠
パターンD:サブドメイン → ルート
blog.example.com/example.com/
サブドメインで運用していたブログをメインドメインのルートに移行。パターンAとBの複合作業です。
パターンドメイン変化難易度SEO影響
A:サブドメイン→サブディレクトリドメイン変化あり★★★☆一時的変動あり
B:サブディレクトリ→ルート同一ドメイン内★★☆☆小〜中程度
C:ルート→サブディレクトリ同一ドメイン内★★☆☆一時的変動あり
D:サブドメイン→ルートドメイン変化あり★★★★☆一時的変動あり

📊 2. SEO影響と注意点

Googleはサブドメインとサブディレクトリを同様に扱うと述べていますが、実務的にはサブディレクトリの方がメインドメインの評価を直接共有できるため有利とされることが多いです。同じテーマ・ブランドのコンテンツを統合する場合はサブディレクトリへの移行が推奨されます。

💡 SEO影響を最小限にする3原則:
① 旧URL → 新URLへ1対1で301リダイレクトを設定する
② Better Search ReplaceでDB内のURL一括置換を行う
③ Google Search Consoleで新URLのサイトマップを送信してクロールを促進する
⚠️ サブドメイン→別ドメインへの移行:blog.example.comからexample.comへの移行はドメインが変わるため、ドメイン変更ガイドのSearch ConsoleのAddress Change設定も必要です。

🔧 3. パターン別 移行手順

パターンA:サブドメイン → サブディレクトリ

blog.example.comexample.com/blog/ への移行です。

1
サブディレクトリを作成してWPをセットアップ⏱ 30〜60分
1
public_html/blog/ ディレクトリを作成する

FTPまたはファイルマネージャーで public_html/blog/ ディレクトリを作成します。

2
新規DBを作成してWordPressを仮インストールする

サーバーパネルで新規DBを作成し、example.com/blog/ にWordPressをインストールします(この後インポートで上書きされます)。

2
コンテンツを移行・URL置換する⏱ 30分〜2時間
1
All-in-One WP Migrationでエクスポート→インポートする

サブドメインのWPでエクスポートし、example.com/blog/ のWPでインポートします。

2
Better Search ReplaceでURL置換する

検索:https://blog.example.com / 置換:https://example.com/blog
全テーブルを対象にドライラン確認後に本実行します。

3
パーマリンク設定を保存し直す

設定 → パーマリンク設定 → 変更を保存 をクリックして .htaccess を再生成します。

3
サブドメインに301リダイレクトを設定する⏱ 15分

サブドメイン(blog.example.com)の .htaccess に追記:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/blog/$1 [R=301,L]
💡 サブドメインが別サーバーの場合:サブドメインが別サーバーで運用されていた場合は、そのサーバーの .htaccess に追記します。同一サーバーの場合はサーバーパネルのサブドメイン設定でリダイレクトを設定できる場合もあります。
4
Search Console設定・動作確認⏱ 15分
1
新URLをSearch Consoleに追加・サイトマップ送信

example.com/blog/sitemap.xml をSearch Consoleに送信します。

2
旧サブドメインでAddress Changeを設定(推奨)

Search ConsoleでAddress Changeを使って移転を通知します。詳細はドメイン変更ガイドを参照。

パターンB:サブディレクトリ → ルート

example.com/blog/example.com/ への移行です。

1
ルートにWordPressファイルをコピー・設定変更⏱ 30〜60分
1
public_html/blog/ の全ファイルをpublic_html/ にコピーする

既存のルートファイルがある場合は事前にバックアップしてください。

2
phpMyAdminでサイトURLを更新する

wp_options テーブルの siteurlhomehttps://example.com に変更します。

3
Better Search ReplaceでURL置換する

検索:https://example.com/blog / 置換:https://example.com
スラッシュの有無を確認しながら複数パターンで実行します。

4
旧パス(/blog/)に301リダイレクトを追加する

ルートの .htaccess に追記:RewriteRule ^blog/(.*)$ /$1 [R=301,L]

5
パーマリンク設定を保存し直す

管理画面 → 設定 → パーマリンク設定 → 変更を保存 をクリックします。

パターンC:ルート → サブディレクトリ

example.com/example.com/blog/ への移行です。

1
サブディレクトリにファイルをコピー・設定変更⏱ 30〜60分
1
/blog/ ディレクトリを作成してファイルをコピーする

FTPで public_html/ の全WordPressファイルを public_html/blog/ にコピーします。

2
phpMyAdminでサイトURLを /blog/ に更新する

wp_optionssiteurlhomehttps://example.com/blog に変更します。

3
Better Search ReplaceでURL置換する(慎重に)

検索:https://example.com(/blog/なし) / 置換:https://example.com/blog
必ずドライランで確認。example.com/blogexample.com/blog/blog にならないよう注意してください。

4
旧ルートURLを /blog/ に301リダイレクトする

ルートの .htaccess に追記(新コーポレートサイトがある場合は条件を調整してください):

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /blog/$1 [R=301,L]

パターンD:サブドメイン → ルート

blog.example.com/example.com/ への移行です。パターンAとBの複合です。

1
パターンAと同じ手順でルートへ移行(移行先はルート)

All-in-One WP MigrationでサブドメインのWPをエクスポートし、ルート(example.com/)のWPにインポートします。Better Search Replaceで blog.example.comexample.com に置換します。

2
サブドメインにルートへの301リダイレクトを設定
RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
3
Search ConsoleでAddress Change設定(ドメイン変更のため必須)

サブドメインのSearch Consoleで「アドレスの変更」を設定し、example.com への移転を通知します。詳細はドメイン変更ガイドを参照してください。

⚙️ 4. 301リダイレクトのコード例

パターンA:サブドメイン→サブディレクトリ

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?blog\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/blog/$1 [R=301,L]

パターンB:サブディレクトリ→ルート

RewriteEngine On
RewriteRule ^blog/(.*)$ /$1 [R=301,L]

パターンC:ルート→サブディレクトリ(WordPress URLのみ)

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /blog/$1 [R=301,L]

パターンD:サブドメイン→ルート

RewriteEngine On
RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
💡 .htaccess の配置場所:各コードは移行元のサーバー・ディレクトリの .htaccess に追記します。移行先に誤って書くとリダイレクトループが発生します。
💡 .htaccessの配置場所:各コードは移行元のサーバーの .htaccess に追記します。移行先のサーバーに誤って書くとリダイレクトループが発生します。

✅ 5. 移行後の確認チェックリスト

🔨 6. よくあるトラブルと対処法

❌ パターンC(ルート→サブディレクトリ)でリダイレクトループが発生する

.htaccessの条件が不足しており、/blog/ 以下のURLも再度 /blog/ にリダイレクトされるループになっています。RewriteCond %{REQUEST_URI} !^/blog/ の条件を必ず入れて /blog/ 以下へのリクエストはリダイレクトしないようにしてください。

❌ パターンB(サブディレクトリ→ルート)でURL置換後に /blog が2重になる

Better Search Replaceで example.comexample.com/blog に置換した後に逆方向の置換をしたり、置換対象が広すぎる場合に発生します。必ずドライランで確認してから実行し、置換後に数ページのソースを確認してください。問題が発生した場合はバックアップからDBを復元します。

❌ 移行後に管理画面にアクセスできない

wp-config.phpのDB接続情報またはサイトURLの設定が不正な状態です。phpMyAdmin で wp_options テーブルの siteurlhome の値を正しい新URLに直接変更してください。

❌ 画像だけ旧URLのままで表示されない

Better Search ReplaceでURL置換が完全でない場合に起きます。特に http://https:// の両パターン、スラッシュあり/なしのパターンで再度置換を実行してください。また wp_postmeta テーブルにシリアライズ形式で保存されている場合があるため、Better Search Replaceを使うことで自動処理されます。

❌ パーマリンクを保存しても404エラーが続く

.htaccessファイルの書き込み権限が不足しているため、パーマリンク設定が反映されていません。FTPで .htaccess のパーミッションを644に設定するか、FTPで手動で.htaccessを編集・アップロードしてください。Apacheの mod_rewrite が有効になっているかもサーバー側で確認します。

❓ 7. よくある質問(FAQ)

Q. サブドメインとサブディレクトリ、新規に始めるならどちらがいいですか?

同じブランド・テーマのコンテンツであればサブディレクトリ(example.com/blog/)が推奨されます。メインドメインのSEO評価を共有でき、管理も一元化できます。全く別のサービスや言語サイトの場合はサブドメインが適切です。

Q. 移行前後でWordPressのバージョンが違っても問題ありませんか?

基本的に問題ありませんが、移行先は移行元と同じかそれ以上のWordPressバージョンにしておくことを推奨します。プラグインのPHP互換性も確認しておきましょう。

Q. マルチサイト環境でサブドメイン→サブディレクトリに切り替えられますか?

WordPress マルチサイト環境でのネットワーク設定(サブドメイン型⇔サブディレクトリ型)の切り替えは、通常の移行より複雑です。wp-config.phpのマルチサイト設定と各サイトのURLを全て変更する必要があります。マルチサイトの移行についてはマルチサイト移行ガイドを参照してください。

Q. 旧サブドメインを削除しても問題ありませんか?

旧サブドメインを削除するとリダイレクトが機能しなくなります。旧サブドメインを削除する場合は、ドメインレジストラやDNS設定でCNAMEやAレコードを維持しながら.htaccessのリダイレクトが動くようにするか、長期間(最低1年)は維持することを推奨します。

← 前のページ
ドメイン変更を伴う移管
次のページ →
マルチサイトの移行