WordPress サイトのドメイン名を変更する手順
WordPress サイトのドメイン名を変更するときの一般的な手順について説明します。
前提
- 対象の WordPress サイトはシングルサイトである(マルチサイトではない)
- マイグレーション用のプラグインは使用しない
- WP-CLI が利用できる
また、ここではドメインの変更とあわせてサーバーも変更する想定でお話をします。 サーバーを変更しない場合はサーバー変更に関連するステップは読み飛ばしてください。
確認時のバージョン
- WordPress
6.4.3
- WP-CLI
2.10.0
手順を以下に説明していきます。
準備
1. タスクリストの作成
最初にドメイン名の変更に必要なタスクの一覧を作成します。
見切り発車で作業を始めて次にすべきことを都度考えているとトラブルが発生するリスクが上がります。 大まかな流れはほぼ共通ですが作業の詳細はサイトによって異なるので、ぜひ事前に必要な作業をすべて書き出すようにしてください。
2. 新ドメイン名の調達
移行先の新しいドメイン名を調達します(方法は販売会社によって異なるので説明は割愛します)。
この後は旧ドメイン名・新ドメイン名が以下の想定でお話を進めます。
旧ドメイン名 | 新ドメイン名 |
---|---|
example-from.com | example-to.com |
3. 本番環境以外の環境でリハーサル
ドメイン変更作業は、途中でのトラブルの発生により作業時間が長引いたり作業の延期・やり直しが必要になったりすることがあります。 そのような事態が発生したときのリスクが大きい場合は、本番環境とは異なる環境でリハーサルを行うことをおすすめします。
担当する方がドメイン変更作業にあまり慣れていない場合もリハーサルを行うことでリスクやストレスを減らせます。
旧サーバーでの作業
4. サイトをメンテナンスモードにする
サイトをメンテナンスモードにします。 さまざまな方法があるのでサイトの状況に適した方法を選んでください。
例えば、かんたんな方法のひとつは、ドキュメントルートに maintenance.html
といった HTML ファイルを設置しておいて、サイトへのリクエストをすべてその HTML ファイルに向ける方法です。
# 503 エラー発生時に maintenance.html を返す
ErrorDocument 503 maintenance.html
# すべてのリクエストに対して 503 エラー( Service Unavailable )を返す
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ - [R=503,L]
5. サイト全体のバックアップの作成
データベースとメディアファイルを含むサイト全体のバックアップを作成します。 この事前バックアップはドメイン変更の途中や事後に問題が発生したときの切り戻しや原因の絞り込みに使えるため非常に重要です。
6. WordPress の URL 設定の変更
WordPress の URL 設定の変更を行います。 さまざまな方法がありますが今回はターミナルで行う方法を紹介します。
- サーバーに SSH で接続します
- WordPress インストールディレクトリに
cd
コマンドで移動します - WP-CLI (
wp
コマンド)でオプション項目home
とsiteurl
に新ドメインを使った URL をセットします
cd /root/to/wordpress
wp option update home https://example-to.com
wp option update siteurl https://example-to.com
home
siteurl
ともに末尾に /
は付けません。
home
と siteurl
は WordPress 管理画面の「設定」 → 「一般」の次の項目に対応します:
オプション | 管理画面での項目 |
---|---|
home |
サイトアドレス (URL) |
siteurl |
WordPress アドレス (URL) |
関連ページ: WordPress アドレス( siteurl )とサイトアドレス( home )の違い
home
と siteurl
の値を変更すると、その直後から旧ドメイン名でサイトにアクセスしてもページが正しく表示されなかったり管理画面にアクセスできなくなったりします。
これは WordPress の正しい挙動なので気にせず次に進みます。
7. データベース内に格納された内部リンクの変更
データベース内のさまざまな場所に格納された旧ドメイン名の文字列をすべて新ドメイン名に変更します。
- サーバーに SSH で接続します
- WordPress インストールディレクトリに
cd
コマンドで移動します - WP-CLI (
wp
コマンド)で旧ドメインの文字列を新ドメインの文字列に変更します
# `guid` カラムを除外して、データベースのすべてのテーブル内の文字列を置換する:
wp search-replace 'https://example-from.com' 'https://example-to.com' \
--skip-columns=guid
ドメイン名の文字列は、固定ページや投稿の本文中のメディアファイルの埋め込み URL や別の投稿へのリンク(内部リンク)、 guid
カラムなどに含まれています。
guid
カラムの GUID について以下に少し説明します。
GUID とは?
GUID は「 Globally Unique Identifier 」の略で、各投稿に自動的に付与される ID のひとつです。 投稿には連番の ID もありふだん WordPress を触っているとそれを意識することが多いですが、 GUID はそれとは異なるもうひとつの ID です。
GUID にはドメイン名を含む投稿の URL がセットされます。
例: https://example-from.com/?p=1
GUID の主な用途は RSS フィードの <guid>
タグです。
フィードリーダーはフィードに含まれる GUID を見て投稿の同一性をチェックします。
そのため、サイト側で既存の投稿の GUID を変えてしまうとフィードリーダーは GUID の変更された投稿を新しい投稿と認識してしまいます。
新規で公開するサイトの場合は RSS の読者がいないため GUID を変えても問題ありませんが、公開済みのサイトで RSS の読者がいる場合は原則 GUID は変更すべきではありません。
WordPress.org の公式のガイドでは次のように注意書きがされています:
It is critical that you do NOT change the contents of this field.
...
Never, ever, change the contents of the GUID column, under any circumstances.
抄訳:
このフィールド(訳註:
wp_posts
のguid
カラムのこと)の中身を変えないことが非常に重要です。...
どのような状況でも GUID カラムの中身は絶対に変更しないようにしましょう。
GUID を変えないことがそれだけ強く推奨されるのであれば、 wp search-replace
コマンドもデフォルトで guid
カラムを除外してくれた方がよい気もしますが、現状はそうなっていないので上記のとおり --skip-columns=guid
オプションを指定するようにします。
8. .htaccess
の変更
Apache の設定ファイル .htaccess
に旧ドメイン名を含む行が存在する場合はそれを新ドメイン名に変更します。
含まれていない場合このステップはスキップしてください。
9. サイト全体のバックアップの作成
データベースや .htaccess
ファイルに必要な変更を加え終わった段階でもう一度データベースとメディアファイルを含むサイト全体のバックアップを作成します。
10. サイト全体のバックアップのダウンロード
ひとつ前のステップで作成したサイト全体のバックアップを手元の作業用マシンにダウンロードします。
新サーバーでの作業
11. データベースへのデータのインポート
ひとつ前のステップでダウンロードしたバックアップを使って、移行後のデータベースにデータをインポートします。
12. ファイル一式の設置
続けて、移行後のサーバーにメディアファイルを含む WordPress のファイル一式を設置します。
13. wp-config.php
のデータベース設定を変更
WordPress が移行後のデータベースに接続できるように、設定ファイル wp-config.php
のデータベース設定を変更します。
最小限以下の定数の値を変更する必要があります:
定数名 | 説明 |
---|---|
DB_NAME |
データベース名 |
DB_USER |
データベースのユーザー名 |
DB_PASSWORD |
データベースのパスワード |
DB_HOST |
データベースが存在するホスト |
14. サイトのメンテナンスモードを解除
メンテナンスモードの設定が移行後のサーバーに残っている場合はそれを解除します。
15. 新ドメイン名の DNS 設定
新ドメイン名側(ここでは example-to.com
)での DNS の設定を完了させます。
レンタルサーバーの設定などで事前に完了している場合このステップはスキップしてください。
DNS の TTL の設定値によっては DNS の設定を変更してから各利用者がサイトにアクセスできるまでに時間がかかることがあります。
ここまで完了したら新ドメイン名でサイトにアクセスできるようになるはずです。
16. 管理者メールアドレス・ユーザーメールアドレスの変更
ドメインの変更に合わせて管理者メールアドレスやユーザーメールアドレスを変更したい場合はそれらを変更します。
管理者メールアドレスの変更
管理画面でサイドメニューの「設定」 → 「一般」をクリック、「一般設定」のページで「管理者メールアドレス」フィールドの値を変更します。 新しいメールアドレスに確認用のメールが届くのでそこで確認を完了させると更新が反映されます。
ユーザーメールアドレスの変更
管理画面でサイドメニューの「ユーザー」をクリック、「ユーザー」のページから対象のユーザーを探してメールアドレスを変更します。
数が多い場合は、管理画面の GUI を使うよりも WP-CLI の wp user update
コマンドなどを使った方が効率的です。
イメージ:
再び旧サーバーでの作業
17. 新ドメイン名へのリダイレクト設定
旧ドメイン名から新ドメイン名へのリダイレクト設定を行います。
ユーザー体験や SEO の観点から、ドメイン変更後は旧ドメイン名から新ドメイン名へのリダイレクトを行うことが非常に重要です。 リダイレクトを行いたくない特殊な理由が無いかぎりリダイレクトは行うのがよいかと思います。
イメージ:
# パスを維持したまま example-from.com から example-to.com にリダイレクトする:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example-from\.com$ [NC]
RewriteRule ^(.*)$ https://example-to.com/$1 [L,R=301,NC]
18. 旧ドメイン名・旧サーバーを閉じる
ドメインの変更からしばらく時間が経つなどして旧ドメイン名・旧サーバーが不要になった場合は旧ドメイン名・旧サーバーを閉じます。
以上です。
公式ガイド
- Migrating WordPress – Advanced Administration Handbook | Developer.WordPress.org
- WordPress でドメイン変更といえばこのページがよく紹介されます。
WP-CLI リファレンス
- wp option update – WP-CLI Command | Developer.WordPress.org
- wp search-replace – WP-CLI Command | Developer.WordPress.org
- wp user update – WP-CLI Command | Developer.WordPress.org
プラグインを利用する場合
今回はプラグインを使わず WP-CLI を主に使う方法をご紹介しましたが、ドメイン変更に使えるマイグレーション(引っ越し)用のプラグインが開発・提供されています。
インストール数が最も多いものを以下にピックアップします。
プラグイン | インストール数 |
---|---|
All-in-One WP Migration | 500 万以上 |
Duplicator | 100 万以上 |
WP Migrate Lite | 30 万以上 |
WP-CLI を使う方法が複雑に感じる方はプラグインの利用を検討してみてください。