WordPressでドメインやディレクトリ変更

  • 54
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

WPでディレクトリ構造を変更したりドメイン名を変更したりすると,DBも書き換える必要がある.

例)example.com → newdomain.com

WPの場合,DBのwp-optionsだけでなく,投稿内に挿入した画像URLにもフルパスが書き込まれる.
そのため,置換対象のドメイン名がDB内に大量に含まれる.

また,一部のプラグインではURLをシリアライズしている場合がある.
シリアライズされているデータは,単純に文字列置換をすると整合性が取れなくなり,パース時にエラーが出るようになってしまう.

これらの問題を解決し,簡単にドメイン名を変更できるツールを紹介する.

事前準備

  • 移転先に全ファイルを複製しておく.
  • DBをバックアップしておく.
  • DBも移転するなら,移転先にインポートしておく.
  • サイトを見ていた場合は閉じておく.

ツールダウンロード

以下にアクセス.
DATABASE SEARCH AND REPLACE SCRIPT IN PHP
v3.0.0 betaをダウンロードして解凍する.
betaではあるが,筆者が使用している限りは問題は見当たらない.

安定版はv2.1.0なので,こちらを使用しても良い.
v2.1.0の解説は以下のサイトなど
ウィジェットも対応。WordPressでサーバ移転時にデータベースのドメインを置換する方法

設置

移動先のディレクトリ(wp-congfig.phpを置いた階層)に,解凍したフォルダごと設置(アップロード)する.

使い方

ブラウザでツールにアクセスする

例)http://newdomain.co.jp/Search-Replace-DB-master/

search/replace

replace欄に旧アドレス,with欄に新アドレスを入力する.
「use regex」にチェックを入れると,正規表現も使用可能.

databese

同階層にwp-config.phpが見つかった場合はdatabase設定を自動で読み込んでくれる.
database欄が空欄の場合は,置換対象のDB設定を入力する.

tables

tables欄で「select tables」を選択すると,テーブルを限定して置換が行える.
複数選択は,Commandキー(WindowsはCtrlキー)やShiftキーを使用.

columns to exclude(空欄可)

この欄にカラム名を入れると,そのカラムを除外する.

columns to include only(空欄可)

この欄にカラム名を入れると,そのカラムのみを置換する.

置換欄記述方法

通常

例)
example.com → newdomain.co.jp (ドメイン変更)
example.com → www.example.com (www追加)
example.com → new.example.com (サブドメイン化)
dev.example.com → example.com (本番化)

replace
[dev.example.com]
with
[newdomain.co.jp]

上記のように入力すれば,ごっそり置換してくれる.

ディレクトリ変更あり or メールアドレスの設定は変更したくない場合

単純に置換してしまうと,以下のようになってしまう.

example.com → example.com/site
mail@example.commail@example.com/site

replace
[http://example.com]
with
[http://example.com/site]

上記のように,「http://」も入れれば良い.

  • サイト内で「https://」も使用している場合は,そちらも忘れずに.
  • ディレクトリ変更の場合は,.htaccessも書き換える必要があるので注意.

メールアドレスのドメイン部分のみ変更したい場合

replace
[@example.com]
with
[@mail.example.com]

上記のように,「@」も入れれば良い.

その他

ドメインだけでなく,どんな文字列でも置換できる.はず.

例)
Microsoft → microsoft
Apple Computer → Apple,Inc.

実行 : actions

dry run

実行して結果だけ表示.

live run(おすすめ)

置換中のファイルを表示しながら実行.

ツール削除

外部からDBのデータを書き換えられる状態になっているので,ツール自体を必ず削除する.
「delete me」ボタンを押すと自動で削除される.

「Could not delete the search replace script automatically.」
上記のようなエラーが出た場合は,サーバ上から手動で削除する.

置換後

置換後にサイトを開き,もしInternal Server Errorなどのエラーが出ていたら,
パーマリンク設定ページから「変更を保存」を押すと直る場合が多い
[newdomain.com/wp-admin/options-permalink.php]