WordPressサイト移行時にURLをSQLファイルを直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使いましょう

URLの一括置換は危険

本日はWordPressの移行方法についてのお話です。
WordPressは、DBの中にホスト名やIPを含んだURLが散在しています。私も最初はSQLで一括置換すればOK!と思っていましたが、こちらの
WordPressでサーバ移行時にデータベース上のドメインを書き換える方法
という記事を見てその方法だと危険ということを知りました。
DB内にシリアライズされた情報がデータがあって、整合性が合わなくなる様子。
(具体的にいうと、wp_optionsテーブルなどでurlの長さなどのデータを持っている)
特にテーマやプラグインのデータが壊れる可能性があります。

移行するには、「Search and Replace for WordPress Databases Script」というツールを使います。
CodexのMoving WordPress に書いてある公式な方法です。

こちらのツール、新しいバージョンも出て画面も前と結構変わってます。v3.0.0を使ってみたので、その記録です。

1. バックアップ

移行ではなくホスト名の変更の場合は、必ず作業を始める前に下記バックアップをとりましょう。

  • WordPressフォルダ
  • データベース

2. wp-config.phpファイルでデータベースの接続情報を編集

必要に応じて移行先のwp-config.phpのデータベース接続情報(xxxxxの部分)を変更します。

define('DB_NAME', 'xxxxx');
define('DB_USER', 'xxxxx');
define('DB_PASSWORD', 'xxxxx');
define('DB_HOST', 'xxxxx');

 

3. 置換ツールのダウンロード

Search and Replace for WordPress Databases Script をダウンロードします。
今回は最新のV.3.0.0 BETAになりますので、下のダウンロードボタンをクリックします。

 

Search-Replace-DB-master.zipというファイルがダウンロードされるので、解凍します。

4. アップロード

解凍したフォルダを、WordPressフォルダ直下にアップロードします。
これで、下記のURLにアクセスすると、Search And Replaceの画面が開きます。

http://[hostname]/Search-Replace-DB-master/

5. replaceとwithを入力

なんの文字列を(replace)、何で置換するか(with)を入力します。

ここで気をつけたいのは、replaceにhttp(s)や/(スラッシュ)を付与しないということです。
↑ 重要です!!!!!

※Search and ReplaceのHPにはreplaceに何を書くか詳しく書かれていないため、私の私見となります。私が試した限りでは、http(s)やスラッシュが含まれていないURLもDB内に存在したため、httpなどがないURLの方がDry Runで多くヒットしました。つまり、httpなどを含めた文字列で置換すると、漏れが出てしまうと考えています。

  • 良い例: www.example.com/test
  • 悪い例: http://www.example.com/test/

6. Dry Run: お試し。もし実行したらこうなります

「Dry Run」をクリックすると、実際にはSQLは実行されず、もし実行したらこれだけ変更されるよ、という想定を表示してくれます。

7. Live Run: 本番実行

Dry Runで変更される箇所を確認したら、いよいよ本番実行です。
「Live Run」をクリック。

コンファームが表示されます。心の準備ができたらOKを押します。

SQLが実行され、置換が完了します。

8. Delete: 置換ツールのフォルダを消す

最後に必ず置換ツールのフォルダは消しておきましょう。
もしそのままにして外部からアクセスされたら、一括置換される恐れがあり大変危険です。

 

delete me ボタンで自動的にフォルダごと削除されます。

以上となります。

category cloud