サイトの引越しサービス

今回はドメイン変更を伴うWordPressのサーバーの移行方法についてご紹介します。
通常のWordPressのサーバー移転後に、URLの置換と転送設定を行っていきますが、ドメイン変更を伴うWordPressのサーバー移行の重要なポイントとして、URLの置換はテキストエディタを使わないで、DATABASE SEARCH AND REPLACE SCRIPT IN PHPというツールを利用することです。

では、最初に以前掲載した【初心者向け】WordPressのサーバー移行方法を参考に、下記のWordPressのサーバー移行作業を行い、次にドメイン変更と転送設定の作業に進んでください。

ドメイン変更と転送設定

URLの置換

URLの置換はDATABASE SEARCH AND REPLACE SCRIPT IN PHPというツールを使います。WordPress CodexのWordPress の引越し - WordPress Codex 日本語版で推奨されているURLの置換方法なので、安心して使うことができます。

では、実際にDATABASE SEARCH AND REPLACE SCRIPT IN PHPを使ってURLの置換を行っていきます。

Search-Replace-DB-masterの設置

DATABASE SEARCH AND REPLACE SCRIPT IN PHPのページにアクセスしてください。

Knowledge checkの3つの項目にチェックを入れてください。

Search-Replace-DB-master

すると、ページの下部分にEmailの入力欄と送信ボタンが出現します。
NamaとEmailを入力して、最後にSUBMITボタンを押してください。

Search-Replace-DB-master

次に、入力したメールアドレス宛にメールが届きます。
メールの文面の赤枠部分の「here」を押すとSearch-Replace-DB-masterがダウンロードできるようになります。

Search-Replace-DB-master

Search-Replace-DB-masterで置換

ダウンロードしたフォルダを解凍し、wp-config.phpと同じ階層に「Search-Replace-DB-master」フォルダをアップロードします。

phpMyAdmin

ブラウザで下記のURLを開きましょう。

https://移行後のサーバー名/Search-Replace-DB-master/

phpMyAdmin

入力項目がいくつかありますが、1つずつ順にみていきます。

search/replace
①「replace」に移行前のドメイン名、②「with」に移行後のドメイン名を入力してください。
http(s)や/を入力するとエラーになりますので、注意してください。

正しい例: www.sample.com/test
間違った例: http://www.sample.com/test/

database
③で接続するデータベース情報を確認します。
この部分はWordPressのwp-config.phpに記載されています。

tables
④「columns to exclude」で置換するテーブルを限定できます。
ここに必ずGUIDと入力してください。

※GUIDは絶対に変更してはいけないので、必ずGUIDの設定をしてください。

actions
⑤「dry run」で置換の仮実行します。
下記の「view changes」をクリックすると、どのファイルのどの部分が更新されるのかを確認できます。

phpMyAdmin

「dry run」で問題が無ければ⑥「live run」で置換を実行します。
下記のような確認メッセージが表示されるので、OKを押してください。
phpMyAdmin

「live run」が完了すると、Updatesのところに変更されたファイル数が表示されます。
phpMyAdmin

delete
⑦「delete」ボタンを押すと、データベース置換機能が消去されます。
ただ私はちょっと怖いので、サーバー上からフォルダごと削除しています。

なお、「Search-Replace-DB-master」のデータが残っていたら、ブラウザ上から操作できるので、必ず削除しましょう。

管理画面からログイン

最後にWordPressの管理画面にログインして移行が完了していることを確認してください。

【補足】URLの置換はテキストディタを使わないこと

この部分は少し専門的な話になるので、それほど詳しいことを知らなくていい場合は読み飛ばしてもらって結構です。

以前私もテキストエディタを使ってURLの置換を行ってましたが、プラグインが動かなかったり、メディアの一部がインポートされない、一部のページが読み込まれてなかったりして何かしらの不具合が生じます。何か良い方法はないかと探していたところ、WordPress Codex 日本語版で発見しました。サイトURLの変更のGUIDについての重要事項の項目に詳しく記載されています。

上記の作業を行いデータベース内で直接 URL を変更している際、wp_posts テーブルの "guid" カラム内に URL が含まれているのに気付くかもしれません。

このフィールドに含まれる内容は変更しないことは非常に重要です。

"GUID" という言葉は "Globally Unique Identifier (グローバル一意識別子)" の略です。このフィールドには「すべてのスペースと時間に置いてユニークであり、 絶対に変更されない」という投稿の識別子が含まれています。GUID フィールドは主に、WordPress のフィードを作るのに使われます。

<中略>

しかし、GUID は絶対に変更してはなりません。ドメインを変更しても、新しいアドレスに移動したとしても投稿はやはり同じ投稿です。新しい URL のフィードを読み込んだフィードリーダーは過去にユーザーが投稿を読んだかどうか認識する必要が有るため、GUID は同じものに保つ必要があります。 どんな状況においても、GUID カラムの内容は絶対に変更しないでください。

重要な部分だけを引用しましたが、簡単に言うと、WordPressにはGUIDというフィールドが存在し、そこはどんなことがあっても変更してはいけないということです。

テキストエディタでは指定のURLをすべて置換するので、GUIDのフィールドのURLまで置換してしまい、いろんな不具合が生じていたのです。
私もこの方法を知ってからはまったく不具合が起こらず、安心してWordPressを移行できるようになりました。

WordPressテーマファイルの修正

WordPressのテーマファイルの中にドメイン名を含んだ記述はありませんか?
現在のドメイン名があれば、移行後のドメイン名に変更しましょう。

転送設定

ドメインを変更した場合は、必ず転送設定を行いましょう。
正しく転送設定を行うと、今の検索順位をきちんと引き継ぐことができます。

新しいサイトのディレクトリ構造が旧サイトと同じで、ドメインのみ変更する場合であれば、.htaccessに下記のコードを追加してください。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (.*) http://example.com/$1 [R=301,L]
</IfModule>

http://example.com/に新しいサイトのURLが入ります。

ただ、ここで1つ気を付けて頂きたいのは、コードの位置です。
最初に上記のコードを書いてから、その次にWordPressの処理を書きます。この位置を間違えると、正しくリダイレクトが行われません。

最終的に下記のような記述になります。


<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (.*) http://example.com/$1 [R=301,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

最後に

上記の一連の作業をなるべく詳しく分かりやすく記載したつもりですが、結構専門的な作業になるので作業の内容に不安を感じる方もいるでしょう。 また実際に作業を行っても上手くいかない事もあるので、そんな時はWordPressの移転代行のサイトの引越しサービスまでご相談ください。