WordPress(以下WP)で管理しているWebサイトを移転や独自ドメインの取得などを理由にアドレスを変更した際、そのままでは新しいアドレスでアクセスしても、各コンテンツのリンクを辿ったり管理画面にログインしようとすると前のアドレスに転送されてしまいます。これはWPが常にデータベース(以下DB)と紐づいている性質上、DB内のURLが旧サイトのアドレスのままであることが原因です。
DBを書き換える方法はいくつかありますが、本記事では「Search Replace DB」を利用したWordPressサイトのURLの書き換え方法について解説しています。
補足
ドメイン名は同じでもWPサイトを運用途中からSSL化した場合にも、DBの書き換えは行っておいた方がよいかと思います(DB上はhttp://
のままのため)
なお、独自ドメインを利用している場合など新しいサイトでもアドレスがまったく同じ場合は、DBの書き換えは不要です。
Search Replace DBを利用する際の留意事項
「Search Replace DB」はPHPとMySQLで構成されたWebサイトのDB内を検索置換するプログラムで、とくにWPサイトのDB書き換え利用されることが多いです。
本記事ではURLを書き換えていますが、URLに限らず文字などの書き換えも可能です。
補足
本記事公開時点でのバージョンはv4.1.4で、PHP8に対応しています。筆者はPHP8.3.9の環境で動作確認しています。
利用する際は以下を確認の上、じゅうぶん注意して作業を行うようにしてください。
- 作業前に必ずDBのバックアップを取っておく(当サイトの記事をご参考ください)
- プログラムの使用後、プログラムファイル一式を必ずサーバーから削除する
不具合などあった場合にすぐ以前の状態に戻せるように、DBはバックアップを取っておくと安心です。
また、「Search Replace DB」はDBを簡単に書き換えることができるため、使用後もそのままサーバーに残してしまうと、悪意を持ってDBを書き換えられてしまう可能性があります。利用後はプログラム一式を必ずサーバーから削除するようにしてください。
事前準備
移転などでサーバーが変更になる場合(あるいはMAMPなどローカル環境でサイトを再現する場合)は、DBを書き換える前に以下の作業を行なってください。
DBをインポートする
変更先のサーバーでDBを作成、バックアップしたWPのDBをインポートします。
DBのエクスポート手順ついては、以下の記事をご参考ください。
wp-config.phpを書き換える
wp-config.php
を書き換えます。書き換える項目は以下です。
/** The name of the database for WordPress */
define( 'DB_NAME', 'DB名' );
/** Database username */
define( 'DB_USER', 'DBユーザー名' );
/** Database password */
define( 'DB_PASSWORD', 'DBパスワード' );
/** Database hostname */
define( 'DB_HOST', 'DBホスト名' );
上記内容を設置するサーバーの内容に合わせて書き換えてください。
Search Replace DBの利用方法
以下、プログラムの利用方法です。
1. プログラムデータをダウンロードする
GitHubの以下ページにアクセスし、ZIPファイルをダウンロードします。
緑色の「Code」ボタンを押して表示されるメニューからダウンロードできます。
2. プログラムデータ一式をサーバーにアップロードする
ZIPファイルを解凍してできた「Search-Replace-DB-master」ディレクトリをまるごとサーバーにアップロードします。ディレクトリ名は変更しても構いません。
WP本体プログラムのディレクトリ内にアップロードします。サイト移転の場合は移転先のサーバーのWPディレクトリ内にアップロードしてください。
.
├ /wp-admin
├ /wp-content
├ index.php
├ (以下略)
└ /Search-Replace-DB-master ←ディレクトリ一式まるごとアップロード
補足
ここでは詳細触れませんが、サイト移転の場合は、移転先のサーバーに移転前のWPデータ一式とDBのインポートを済ませてください。wp-config.php
のDB情報の書き換えも忘れずに。
3. DB書き換えの準備をする
上記でアップロードしたプログラムのディレクトリにアクセスします。
補足
http
でアクセスした場合は、以下のメッセージが表示されます。
MAMP等を利用してPC上でローカルサーバーを立てていてそれを外部に公開していない場合はhttp
でのアクセスでも問題ないですが、DB情報を入力するため、レンタルサーバーなどで利用する場合は必ずhttps
接続(SSL接続)で利用するようにしてください。
「Search Replace DB」の各項目に必要事項を入力していきます。
「SearchReplace」の項目のreplace
に続く入力フォームに「書き換え前のURL」、with
に続く入力フォームに「書き換え後のURL」をそれぞれ入力します。
DBの書き換えを間違えないように、入力はhttp(s)://
から入力します。また、URLの末尾の/(スラッシュ)
は入力しません。
【入力例】
書き換え前のURL:https://www.example.com
書き換え後のURL:https://www.example.jp
補足
それぞれ入力内容をwww.example.com
www.example.jp
としても構いませんが、WebサイトのURLは必ずhttp(s)://
からはじまるため、URLの書き換えの場合はhttp(s)://
から入力した方が間違いが起きにくく確実です。
続いて、「Database Details」の項目で書き換えるWPのDB情報を入力します。wp-config.php
に記載されているDB情報と同じものを入力します。通常のレンタルサーバーであればPort(ポート)は21
あるいは22
なので、未入力のままでOKです。
DB情報を入力したら、「Test Connection」ボタンを押してDBに接続できるか確認します。正常に接続できれば、以下のように緑色のラベルで「Success」と表示されます。
4. DBを書き換える
続いて「Which Tables?」の項目では、書き換え対象のDBテーブルを指定します。基本的には「all tables」のままで問題ありません。また、入力欄も空白のままでOKです。
ここまで入力できたら、ボタンを押してDBを書き換えます。
「Do a safe test run」ボタンを押すと、DB書き換えの処理テストが行われます。DB書き換えのシミュレートができるので、はじめてDBを書き換える場合やいきなり書き換え処理を実行するのが不安であれば、いちどテストするとよいです。
「Search and Replace」ボタンを押すと、最終確認としてダイアログが表示されます。ダイアログをOKすると、DBの書き換え処理が実行されます。
DBの書き換え状況はリアルタイムに表形式で表示されます。
サーバーの処理速度によるところも大きいので、書き換え処理が完了するまでの時間はまちまちですが、DBのサイズ(容量)が大きい場合は時間がかかることがあります。
(上記画像はURL表示箇所を加工しています)
5. DBの書き換えを確認する
上記画像の「Cells changed」の列で、wp_postmeta
wp_posts
wp_users
が0
以外の数字になっていることを確認します。これらはDBが書き換えた数を表しています。
また、ブラウザでphpMyAdminにアクセスして書き換えたDBを選択し、wp_options
をクリックします。右側に内容が表示されるので、siteurl
とhome
のURLが書き換えたURLに変更されていることを確認します。
(上記画像はURL表示箇所を加工しています)
6. Search Replace DBのプログラムを削除する
DBの書き換えと確認が完了したら、「Search Replace DB」プログラム一式をサーバー上から削除します。
「DELETE」項目の「delete me」ボタンを押すと、プログラムファイル一式がサーバー上から削除されます(ディレクトリは残ります)
FTPでサーバーから直接削除するでもOKです。
削除後は再度プログラムのディレクトリにアクセスして、404エラー(Not Found)ページが表示されていればOKです。
注意事項
「Search Replace DB」はDBを簡単に書き換えることができるため、使用後もそのままサーバーに残してしまうと、悪意を持ってDBを書き換えられてしまう可能性があります。利用後はプログラム一式を必ずサーバーから削除するようにしてください。
7. WP管理画面からパーマリンクを更新する
WPの管理画面にログインし、「設定」メニューから「パーマリンク」の設定ページを開きます。
パーマリンクの設定項目はそのままで、ページ下部の「変更を保存」ボタンを押します。この作業により、.htaccess
ファイルのWP設定箇所(# BEGIN WordPress
〜# END WordPress
)が更新されます。
この作業はサイト内のメニューなどから各コンテンツへ遷移するリンクを新しいURLに繋げるためのもので、「キャッシュの更新」という認識でOKです。
パーマリンクを更新後、サイトの各リンク遷移に問題がないか確認してください。
DBの書き換え作業は以上です。
DB書き換え時のエラー事例
「Search Replace DB」でDBを書き換える際のエラーについて、よく頻発するものを紹介します。
DBに接続できない
「Database Details」の項目で入力するDB情報に入力間違いがないかご確認ください。入力内容はwp-config.php
に記載されているDB情報と同じものを入力します。
入力後は「Test Connection」ボタンを押して、DBに接続できるか確認してください。
DBが書き換わらない
「SearchReplace」の項目で、書き換え前と書き換え後の入力値が正しいかご確認ください。
「Search and Replace」ボタンを押して表示される書き換え結果表において、wp_postmeta
wp_posts
wp_users
の「Cells changed」の列の値が0
になっている場合は、書き換えが行われていません。DB接続も問題ない場合は、「SearchReplace」の入力値が間違っている可能性が高いです。
DBの書き換え処理が終わらない
サーバーの処理速度によるところも大きいですが、DBのサイズ(容量)が大きい場合は、処理に時間がかかります。
WPのDBのうち、投稿記事やアップロード画像などの情報が入っているwp_postmeta
やwp_posts
はほかと比べてどうしてもサイズが大きくなってしまうため、そのぶん書き換えに時間がかかってしまいます。インターネット接続にも問題がない場合は、もうすこし待ってみてください。
なお、タイムアウトなどで書き換え処理が途中で止まってしまった場合は、エラーが表示されます。
DBの書き換え中にエラーが表示されて止まってしまう
「Search and Replace」ボタンを押してDBを書き換え中にエラーが表示されて止まってしまう場合は、以下のようなことが原因として考えられます。
- サーバー側の処理がタイムアウトした
- DBサイズ(容量)が大きすぎて処理しきれなかった
- 使用しているPHPのバージョンが古いなどで、正常に処理できなかった
しばらく時間をおいて再度書き換えを試してみてください。PHPのバージョンが古い場合は、引き上げを検討する必要があるかもしれません。
DBサイズが原因で書き換えに失敗する場合は、サーバー上で「Search Replace DB」を利用する方法では書き換えが難しい場合があります。
DBを書き換えたがサイト内リンクが発生する(404 Not Foundになる)
DBは正常に書き換え処理が完了したものの、サイト内各コンテンツへのリンクが軒並み404エラーになる場合は、WPサイトのパーマリンクの更新ができていない可能性があります。管理画面からパーマリンクを更新(パーマリンク設定ページの「変更を保存」ボタンを押す)してください。
本記事の解説は以上です。