SSL化やサイトの引越などで、WordPressの文字列・MySQLデータベースを一括置換する方法

Xserver や Coreserver では、無料でSSL設定が可能となっています。

新しくワードプレスでサイトを立ち上げるのであれば、SSL化してからインストールすれば何も問題ないのですが、
以前から運営しているワードプレスのサイトを新たにSSL化した場合、サーバー側でSSL設定しただけでは、本当にSSL化したことにはなりません。

下図のようにURLの左側に「保護されていない通信」と表示されます。

ワードプレスは、画像のパスやリンクなど、絶対URLで記載されているため、それらの文字列を全て「http://~」から「https://~」に書き換える必要があります。

更に、ワードプレスの内容はMySQL DB(データベース)に保存されているため、MySQL内も書き換える必要があります。

そのため、このページでは、「WordPressの文字列・データベースを一括置換する方法」を説明していきたいと思います。

データベースに登録された文字列情報を書き換える方法としては、
「データベースをSQL文で直接書き換える方法」や「Search Regrexなどのプラグインで一括置換する方法」などいろいろあるようです。

しかし、前者は推奨されていなかったり、後者の方法も他のプラグイン(Contact Form 7など)の設定内容が消えてしまうというトラブルもあるとのことで、今回は、より確実に一括置換が可能な【Database Search and Replace Script in PHP】を使う方法を説明していきたいと思います。

【重要 注意】

 下記でダウンロードする「Script」は、Wordpress を設置してあるディレクトリと同じ場所に設置して使うのですが、作業が終わったら直ちに削除する必要があります。

そのままサーバーにおいておくと誰でもあなたのサイトを書き換えることができてしまうのでセキュリティ上大変危険です。よって、繰り返しになりますが、作業終了後できるだけ早く削除する必要があります。

 次に実際に置換を実行する前には、万が一に備え、データベースのバックアップを取っておいてください。

Search-Replace-DB-Masterをダウンロード&インストール

ダウンロード

まずは、Database Search and Replace Script in PHP の公式サイトにアクセスして、フォームに必要事項を入力して送信するとダウンロードのリンクが送られてくるので Search Replace DB をダウンロードします。

Database Search and Replace Script in PHP 公式サイト:

下図がアクセス先のスクリーンショットです。

少し下にスクロールすると、赤枠部分に上記のセキュリティについての注意書きがあります。

繰り返しになりますが、
セキュリティ上、作業終了後はできるだけ早くスクリプトは削除してください。

その少し下に入力フォームがありますので、必要事項を入力してください。

「Knowledge check*」のところ全てにチェックを入れると、「Submit(送信)」ボタンが表示されます。

名前とメールアドレスを入力して「Submit(送信)」ボタンをクリックするとダウンロードリンクが記載されたメールが送られてきます。
メーラーによっては、迷惑メールになることもありますので、迷惑メールボックスもチェックすようにしてください。

チェックボックスの項目は以下のようなことが記載されています。

  1. このスクリプトはセキュリティリスクになる可能性があることを認識しています
  2. このスクリプトを一般向けのWebサーバーに残してはならないことを理解しています
  3. 私は開発者であり、私がやっていることを知っています!

以下のような注意事項の記載されたメールが送られてくるのでダウンロードリンク「here」をクリックするとスクリプトの zip ファイル「Search-Replace-DB-master.zip」をダウンロードすることができます。

左側がダウンロードしたZIPファイル。右側が解凍したものです。


インストール(サーバーに設置)

ダウンロードした「Search-Replace-DB-master.zip」を解凍します。
解凍した「Search-Replace-DB-master」というディレクトリの名前を変更します。

※ 名前を変えないとこのスクリプトにアクセスできないようになっているからです。

【例】
・変更前「Search-Replace-DB-master」
・変更後「sr-db」「sr」「sere」など、

何でもいいので、ご自分がこのディレクトリは、「Search-Replace-DB-master」だということがわかるように変更してください。また、後で削除するときに忘れないようにするのと、ワードプレスのディレクトリ名やファイル名と重複しないように気をつけてくださいね。

名前の変更ができたら、ワードプレスがインストールされている ディレクトリにアップロードします。wp-admin や wp-content、wp-includes のディレクトリと同じ階層になります。

アップロード方法がわからない場合は、FTPソフトの使い方 をご覧ください。

下の図では、名前を「sr-db」に変えてアップロードしています。


アップロード後、ブラウザで「http://ドメイン名/変更した名前/ 」にアクセスして以下のような画面が表示されれば設置は完了です。

変更した名前が「sr-db」の場合のURLは、
「http://ドメイン名/sr-db/ 」となります。
【例1】http://example.com/sr-db/

WordPress をひとつ下の階層に設置している場合のアクセスURLは、
「http://ドメイン名/ディレクトリ名(abc)/sr-db/ 」となります。
【例2】http://example.com/abc/sr-db/

ちなみに名前を変えないでアップロードした場合でも、セキュリティ上の問題で「http://ドメイン名/Search-Replace-DB-master/ 」にアクセスしてもアクセスできないので注意してください。

Search Replace DB の使い方

無事アクセスできましたら、以下のような画面が表示されますので、あなたのサイトの内容を入力していきます。

【1】[Search/Replace]

search/replace の「replace」には置換前(検索・置換の対象)の URLを入力し、「with」には置換後の URLを入力します。

上記の場合「http://mizo3.net/」を「https://mizo3.net/」に置換(SSL化)したいので、
「replace」には「http://mizo3.net/」を、
「with」には「https://mizo3.net/」を入力しています。

【2】[Database]

WordPress で使用しているMySQLデータベースの接続情報を入力します。
Wordpress の「wp-config.php」にある内容を入力します。FTPでダウンロードすれば確認できます。

  1. 「データベース名」
  2. 「データベースのユーザー名」
  3. 「データベースのパスワード」
  4. 「ホスト名」
  5. 「port」は自動で入力されています。
    • (※一般的なMySQLサーバーのポートは、[3306])です。

【3】[Tables]

「tables」の部分はデフォルトでは全てのテーブルを対象とする「all tables」が選択されています。テーブルを限定する場合は「select tables」を選択して指定します。

【4】[Details]

次に「Test connection」ボタンを押して MySQLデータベースに接続されれば、下図のようにグリーンの「Success. You are connected.」が表示され、他のグレーだったボタンも赤く変わりアクティブになります。

【5】[Let’s go]

次に「Do a safe test ran」ボタンを押せばどのように置換されるかを確認(シミュレーション)することができます。置換を実行する前に確認してください。

変更があったテーブルには「view changes」というリンクが表示され、クリックするとどのように置換されるかを確認することができます。

下図が「view changes」をクリックした画像の一部です。
※ 右上の「x Close」をクリックして元の画面に戻ってください。

【6】置換を実行

Do a safe test ran」ボタンで置換される内容を確認し、問題なければ
Search and Replace」ボタンをクリックして置換を実行してください。

ボタンをクリックすると以下のようなアラートが表示されるので確認します。
「本当に置換の実行の準備は整っていますか? データベースのバックアップを取ってください!」

問題がなければ「OK」をクリックすると置換が開始されます。

しばらくすると置換が終了しますので、次にサイトにアクセスして表示を確認してください。


サイトの表示確認

置換が正しく実行され、「.htaccess」 や 「wp-config.php」 に問題がなければ移行先のサイトの URL にアクセスすればサイトが表示されるはずです。

SSL化したサイトですと、以下のようにURLの先頭に鍵マークが表示され鍵マークをクリックすると「この接続は保護されています」というポップアップが表示されます。


スクリプトの削除

置換の作業が完了したら「delete me」ボタンをクリックしてサーバーから「Search-Replace-DB-masterのスクリプト」を削除します。

「delete me」ボタンをクリックすると以下のアラートが表示されるので「OK」をクリックします。


しかし、下図の表示なります。

「※ Search/Replace が見つからないので、手動で削除してください。」とのことのようです。

(※ 今回は名前を変更してアップロードしていますので「delete me」ボタンをクリックしても削除できないと思います。よって、FTPソフトで、あなたが変更した名前のスクリプトをディレクトリごと全て削除してください。

「sr-db」を右クリック → 削除

お疲れさまでした。
以上で、SSL化・サイトの引越でWordPressの文字列・MySQLデータベースを一括置換する方法を終わります。