ドメインの管理はムームードメインでやってるのですが、割引キャンペーンをやっていたので、いくつかまとめてドメインを取得しました。そのうちの2つは、今までサブドメインで運用していた WordPress サイトを独自ドメインに移行したんですが、移行の手順を備忘録として残しておきたいと思います。
ドメイン移管は、適切に行わなければサイトの評価が引き継がれなかったり、重複ページを生み出してしまいます。後述する手順通り進めていただければ、適切にドメインの移管ができると思いますので、ぜひ参考にしてみてください。WordPress サイトでなくてもドメインを移管するときの参考になると思います。
ドメイン移管を行った環境
今回ドメイン移管を実施した環境を紹介しておきます。後述する手順の説明は、以下が前提条件となっております。
- 旧ドメイン:old.domain.com
- 新ドメイン:new-domain.com
- サーバー:変更なし
- データベース:テーブルの接頭辞のみ変更(データベース自体は変更なし)。また、同じデータベース内に3つの WordPress サイトをインストール済
- キャッシュ系プラグインとして「W3 Total Cache」を導入済
具体的なドメイン名は伏せますが、おおよそこのような条件下でドメインを移管しました。
WordPressサイトのドメイン移管手順
以下のような順番で作業を進めていきます。括弧の中は旧サイトと新サイト、どちら側の作業なのかを示しています。
ステップ1. ファイルのダウンロード(旧サイト)
ステップ2. wp-config.phpの書き換え(新サイト)
ステップ3. データベースのエクスポート(旧サイト)
ステップ4. ファイルのアップロードとデータベースのインポート(新サイト)
ステップ5. サイトマップの再構築(新サイト)
ステップ6. リダイレクトの設定(旧サイト)
ステップ7. ファイルの削除(旧サイト)
ステップ1. ファイルのダウンロード(旧サイト)
まずは、旧サイトからファイルをすべてダウンロードします。ダウンロードする時点で、以下のディレクトリやファイルは除外しておきます。
- sitemap.xml や sitemap.xml.gz といったサイトマップファイル
- /wp-content/cache/config
- /wp-content/cache/page_enhanced
cache ディレクトリは、キャッシュ系プラグインを導入している場合にのみ除外します。実際除外しなくても動作するかもしれませんが、何があるかわからないので念のため。
また、キャッシュ系プラグインによって .htaccess 内に追加された記述を削除します。W3 Total Cache の場合、「# BEGIN W3TC ○○~# END W3TC ○○」といった記述になります。○○には有効にしている機能の名前が入ります。例えば、ページキャッシュを有効にしていれば、「# BEGIN W3TC Page Cache core」という始まりです。
ステップ2. wp-config.phpの書き換え(新サイト)
次にダウンロードした wp-config.php を新サイト用にカスタマイズします。
以下の記述を追加しておくことで、新サイトが旧サイトにリダイレクトされる現象を防げます。以前「ローカル環境にコピーしたWordPressが本家にリダイレクトされる時の対処法」という記事でも紹介した記述で、ドメイン移管だけじゃなくローカルにコピーする時にも使える方法です。
define('WP_HOME', '新サイトのURL'); define('WP_SITEURL', '新サイトのURL');
今回の環境の場合、以下のようになります。
define('WP_HOME', 'new-domain.com'); define('WP_SITEURL', 'new-domain.com');
また、設定情報(DB名など)を新サイト用に変更します。
define('DB_NAME', 'ここにデータベース名を入力'); define('DB_USER', 'ここにユーザー名を入力'); define('DB_PASSWORD', 'ここにパスワードを入力'); $table_prefix = 'ここに接頭辞を入力';
マルチサイトの場合
WordPressをマルチサイト化している場合は、以下の箇所も変更します。
define('DOMAIN_CURRENT_SITE', 'new-domain.com'); define('PATH_CURRENT_SITE', '/');
DOMAIN_CURRENT_SITEにはドメイン名、PATH_CURRENT_SITEにはWordPressがインストールされているディレクトリを記述します。ルートディレクトリにインストールしている場合は、PATH_CURRENT_SITEには/(スラッシュ)を入れておきます。
ステップ3. データベースのエクスポート
wp-config.php の書き換えが完了したら、データベースをエクスポートします。phpMyadmin の場合は、[エクスポート] タブからダウンロードできます。
同じデータベース内に複数のサイトをインストールしている場合は、エクスポートするときにドメインを移管するサイトのテーブルだけを選択しましょう。
他のオプションは、フォーマットが「SQL」になっているか確認すれば、あとはデフォルトのままで大丈夫です。
ステップ4. ファイルのアップロードとデータベースのインポート(新サイト)
ここからはいよいよ新サイトでの作業になります。まずはダウンロードしたファイルをすべて新サイトにアップロードします。
続いてステップ3で新サイト用に書き換えたデータベースをインポートします。インポートは、phpMyadmin だと [インポート] タブで実施します。
インポートするファイルを選択して、[実行する] をクリックすればデータベースのインポートが実行されます。
データベースをインポートしたら、DATABASE SEARCH AND REPLACE SCRIPTを使って、データベース上のドメイン情報を書き換えます。
マルチサイトの場合
WordPressをマルチサイト化している場合は、wp_blogs内の”domain”と”path”も新ドメインに変更します。今回の例だと、以下のように変更します。
domain:new-domain.com
path:/
ステップ5. サイトマップの再構築(新サイト)
サイトマップを作成していない方は次のステップに進んでください。サイトマップを作成していた方は、新サイトでサイトマップを再構築しておきましょう。
これからサイトマップを作成したいという方は、WordPress プラグインなら「Google XML Sitemaps」、WEB サービスなら「sitemap.xml Editor」がオススメです。
ステップ6. リダイレクトの設定(旧サイト)
旧サイト側の作業に戻りますが、新サイトへのリダイレクトの設定をします。
.htaccess に以下のような記述をします。旧サイトはリダイレクトさせるだけなので、他の記述は削除しちゃっても問題ありません。というか、私が実施したときは他の記述を削除しないとトップページ以外がリダイレクトしてくれませんでした。
RewriteEngine On RewriteCond %{http_host} ^old.domain.com RewriteRule ^(.*) http://new-domain.com/$1 [R=301,L]
2 行目に旧ドメイン、3 行目に新ドメインを記述します。ドメイン部分を自身の環境に合わせて変更してください。
ステップ7. ファイルの削除(旧サイト)
リダイレクトが正常に行われていることを確認できたら、旧サイトの .htaccess 以外のファイルはすべて削除しても問題ありません。.htaccess はリダイレクトに必要なので削除しないように気をつけましょう。
ここまでできたら、ドメインの移管作業は完了です。お疲れ様でした。
あとがき
今回の例とは異なりますが、もし旧ドメインでWordPressをサブディレクトリにインストールしていたら少し注意が必要です。
例えば、旧ドメインではwpというディレクトリにインストールされていたけど、新ドメインではnew-wpというディレクトリにインストールするとしたら、.htaccess内のRewriteBaseを以下のように変更します。
RewriteBase /new-wp/
これやっておかないと、記事ページが404エラーになってしまいます。パーマリンクを更新しても直らないため、結構ハマったことがあります。意外と見落としがちなので気をつけましょう。