WordPressでサーバ移行時にドメインが変わる場合の書き換え方
2019/09/12
WordPressでサーバの引越しや、テスト環境から本番環境へ移行する場合は、
データベース内の旧ドメインを新ドメインに書き換える必要があります。
色々なサイトを参考にすると、MySQLに接続しUPDATEで書き換える方法も記載されているのですが、
ダンプしたデータを見てみると、シリアライズされたデータがあったりして、うまく動かない事があります。
色々試した結果、一番楽で確実な方法がCodexのMoving WordPressに記載されています。
このサイトを参考にすると、DATABASE SEARCH AND REPLACE SCRIPT IN PHPというスクリプトが公開されていて、それを利用して書き換えを行います。
例として、旧環境→新環境への移行で進めます。
※旧環境のデータベースをmysqldumpでバックアップを取り、新環境への復元まで完了している状態からの流れになります。
事前準備
WordPress引越しを参考にして、新環境に全てのデータを移行しておきます。
※この時データベースの復元まで終わらせておきます。
WordPress設定ファイル書き換え
新環境のWordPressの設定ファイル(WordPressインストールディレクトリ直下)の、
wp-config.phpファイルをエディタで開き、データベース情報を本番環境のものに書き換えます。
例)下の「*****」を本番環境のものに変更します。
※完全に新しくサーバを建てたりして、データベース移行の際に、mysqlデータベース(userテーブル等)も含む全てのデータベースを移行した場合は、この作業は不要になる事があります。
define('DB_NAME', '*****'); define('DB_USER', '*****'); define('DB_PASSWORD', '*****'); define('DB_HOST', '*****');>
Search and Replace for WordPress Databases Scriptのダウンロード
DATABASE SEARCH AND REPLACE SCRIPT IN PHPにアクセスし、DOWNLOADを行うと、「Search-Replace-DB-master.zip」というファイルがダウンロードされますので、解凍します。
解凍すると、「Search-Replace-DB」というフォルダが作成されますので、フォルダごと新サーバにアップロードを行います。
書き換え準備
アップロードしたディレクトリにブラウザからアクセスします。
http://new-domain/Search-Replace-DB-master/
すると下のような画面が表示されます。
replace:旧ドメインを入力 例)http://old-web.domain
with:新ドメインを入力 例)http://new-web.domain
database:wp-config.phpに設定した情報が入力されているので確認します。
tables:基本的には「all tables」を選んでもらって大丈夫ですが、独自に作成したテーブルがあったり等、変換するテーブルを選びたい場合は「select tables」を選択して、対象のテーブルを選択します。
書き換え実行
設定項目の入力が終わったら、まずはテストとして「dry run」を押します。
すると実際のデータベースが検索され、どのテーブルでどれだけアップデートされるかを確認できます。
問題が無ければ、「live run」を押すと、下の確認画面が表示され、OKを押すと書き換えが実行されます。
Search-Replace-DBの削除
これでデータベースの書き換えは実行完了しましたが、このスクリプトを残したままにしておくと、アクセスするだけで誰でも書き換えを行う事ができてしまうので、必ずファイルを削除する必要があります。
一番下のdeleteの「delete me」ボタンをクリックして、OKを押してファイルを削除してください。
「Could not fully delete Search/Replace. You will have to delete it manually」
等のメッセージが表示された場合は先ほどアップロードしたディレクトリ毎削除してしまってください。