
WordPressサイトを移行するとき、
旧URL
example.com
新URL
sot3.net/tec/
のようにドメインやディレクトリが変わることがあります。
このとき必要になるのが
301リダイレクト(恒久転送)
です。
※この記事では旧ドメインは example.com に置き換えて説明しています。
/sub/ 以外を本番サイトへ転送
今回の構成
旧
example.com
↓
本番
sot3.net/tec/
↓
開発
example.com/sub/
つまり
- /sub/ は転送しない(これまでの練習用/開発用をサブディレクトリに変更した)
- それ以外のアクセスはすべて本番サイトへ転送
という設定を作ります。
WordPress開発環境を /sub/ に作る方法については
前の記事で詳しく解説しています。
前の記事

.htaccessの編集
Xserverのサーバーパネルから
ホームページ
↓
.htaccess編集
を開きます。
「!この機能は上級者向けの機能です」と表示される場合は内容を読んで「閉じる」を押す。
編集する場所
example.com/public_html/.htaccess
いきなり301を入れない
ここが重要です。
301は
恒久移転
つまり
ブラウザに強くキャッシュされます。
そのため
動作確認前に301を入れるのは危険です。
まずは 302でテストします。
テスト用(302)
WordPressの自動ルールより先に処理するため、
.htaccessの先頭に追加します。
追加コード
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule ^(.*)$ https://sot3.net/tec/$1 [R=302,L]
この段階では
- /sub/ は転送されない
- それ以外は本番へ転送
という動作になります。
注意点
https://sot3.net/tec/$1
の $1 を忘れると
すべてトップページに転送されます。
最終的に301へ変更
動作確認が終わったら
302を 301に変更します。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule ^(.*)$ https://sot3.net/tec/$1 [R=301,L]
動作イメージ
旧URL
example.com/post1
↓
新URL
sot3.net/tec/post1
例
example.com/category/news
↓
sot3.net/tec/category/news
URL構造を保ったまま転送できます。
301と302の正しい使い分け
リダイレクトには主に2種類あります。
| 状況 | 使用コード |
|---|---|
| 恒久移転 | 301 |
| テスト中 | 302 |
| 一時的な退避 | 302 |
| キャンペーン限定転送 | 302 |
今回のケース
今回の構成は
旧URL → 新URL
なので
恒久移転
つまり
301が正解です。
ただし作業中は302が安全
開発者がよくやる方法。
最初は
[R=302,L]
でテストします。
問題なければ
[R=301,L]
に変更します。
理由
301はブラウザにキャッシュされるからです。
設定ミスをすると
「直したのにまだ転送される」
という現象が起きます。
これはバグではなく
ブラウザキャッシュです。
結論
今回のケースでは
最終形は301
作業中だけ302
これが最も安全で合理的な選択です。
まとめ
今回やったこと
- .htaccessを編集
- /sub/ 以外を転送
- まず302でテスト
- 問題なければ301へ変更
これで
旧ドメインから新サイトへ安全に転送
できます。
この後は次の関連記事WordPress移行でSEOを壊さないチェックリストがオススメです。
次の記事

コメント