同じサーバー内で、WordpressのURL(ドメインやディレクトリ)を移転する方法を紹介します。同じサーバー内であるため、データベースは再構築することなく、Wordpressのディレクトリの変更と、データ中のURLの変更を行い、移動を済ませます。
今回は、ドメインのルートにインストールしたWordpressを、サブドメインに移動する方法について説明します。
それ以外の次のような場合でも、変更する手順は同じですので、同様に移動することができます。
- レンタルサーバーのurlから独自ドメインへ移動する場合。
- サブドメインからサブディレクトリへ移動する場合。
今回は、
移動元: sample.org
移動先: second.sample.org
とします。
サーバーはエックスサーバーです。
目次
バックアップ
作業前にまずバックアップをとります。
ファイルとデータベースの二種類ともバックアップします。
ファイルの方は、普段お使いのFTPソフトやrsyncコマンドなどでバックアップしてください。
データベースのバックアップは、エックスサーバーの場合はサーバーパネルから次の手順でバックアップします。
データベース > MySQL設定を選びます。
MySQLバックアップを選びます。
バックアップをとりたいデータベースのエクスポート実行ボタンを押します。
すると、sqlファイルがダウンロードされ、バックアップが完了します。
サブドメインの設定
サブドメインを作成します。独自ドメインに移動しようとしている方はここで独自ドメインの設定を済ませておいてください。
エックスサーバーの場合は、サーバーパネルから次のようにします。
ドメイン > サブドメイン設定を選択します。
ドメイン選択画面から、設定するドメインを選びます。
sample.org
サブドメインの追加設定にサブドメイン名を入力して「サブドメインの追加(確認)」を押し、次のページで確定を押します。
サブドメイン: second.sample.org
コメントは任意です。
設定が反映されるまで最大半日程度待ちます。経験では、2-3時間で反映されることが多いです。
SSL(https)設定をする人はこのタイミングで、サーバーパネル > ドメイン > SSL設定 > 独自SSLの追加から追加しておいてください。これも時間がかかります。
WordPressファイルの移動
エックスサーバーの場合は、サブドメイン用のサブディレクトリが自動で作られます。
sample.org/public_html/second/
そこへWordpressのルートディレクトリ以下のファイルをまるごとmvコマンドやFTPソフトを使用して移動します。
sample.org/public_html以下を sample.org/public_html/second/へ移動。
データベースの書き換え
次のスクリプトをダウンロードし、解凍します。
search replace DB master https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
解凍したスクリプトをフォルダごと、移動先のフォルダへ置きます。
Search-Replace-DB-master以下を sample.org/public_html/second/Search-Replace-DB-master/ へ転送。
ブラウザで、スクリプトのフォルダへアクセスします。
https://second.sample.org/Search-Replace-DB-master/を開く。
ドメインの設定が終わっていない場合は次のように表示されますので、ストレッチでもしてお待ち下さい。あるいは、アドレスの打ち間違いかもしれません。
無効なURLです。
プログラム設定の反映待ちである可能性があります。
しばらく時間をおいて再度アクセスをお試しください。
スクリプトを使いURLなどの書き換えをします。二通りの置換をします。
内部ディレクトリの置換
search/replace欄の replace A with Bの、A, B欄に入力します。
Aに旧、Bに新アドレスを入力します。
旧: /home/username/sample.org/public_html
新: /home/username/sample.org/public_html/second
ドメインを変更する方は次の通りにします。
旧: /home/username/olddomain/public_html
新: /home/username/newdomain/public_html
database欄は自動で入力されていますのでそのままにします。
dry runボタンを押します。テスト実行がされます。この段階では、実際にはデータベースは変更されません。もし、実際にlive runを実行したら、どういう変更がなされるかが表示されます。
表示された変更予定内容が正しいか慎重にチェックします。
よければ、live runをします。万が一失敗したら、逆の置換をするか、バックアップからデータベースを復元してください。
URLの置換
同様にして、次の置換を行います。
旧: //sample.org
新: //second.sample.org
これで、新URLへの移動が完了しました。
second.sample.orgや管理画面へブラウザでアクセスしてみてください。
うまく動作しているようでしたら、スクリプトへ戻り、スクリプトのdelete meボタンを押して、スクリプトを削除しておいてください。残しておくと脆弱性になります。
.htaccessの変更
次に、旧URLへのアクセスを新URLに301転送するため、.htaccessの設定をします。
RewriteEngine On RewriteCond %{HTTP_HOST} ^sample\.org RewriteRule ^(.*)$ https://second.sample.org/$1 [R=301,L]
このようにsample.orgからsecond.sample.orgにすべて転送したとすると、sample.orgが他の用途に使えなくなってしまいます。しばらくして301転送をする必要がなくなったら解除するとか、すぐに使いたい場合は%{REQUEST_URI}などを使って条件を絞り込むとよいでしょう。
サブディレクトリからサブドメインへ301転送する .htaccessの例
(//sample.org/second/ から //second.sample.org/ へ転送)
RewriteEngine On RewriteCond %{HTTP_HOST} ^sample\.org RewriteCond %{REQUEST_URI} ^/second/ RewriteRule ^(.*)$ https://second.sample.org/$1 [R=301,L]
旧ドメインから新ドメインへ301転送する .htaccessの例
RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain\.sample\.jp RewriteRule ^(.*)$ https://newdomain.sample.org/$1 [R=301,L]
.htaccessにWordpressが自動作成した mod_rewrite.cなどの記述がある場合、移動先によってはRewriteBaseの書き換えが必要です。Wordpressのダッシュボード > 設定 > パーマリンク設定で、共通設定欄を一旦別の設定にしてから、元の設定にし直してみてください。自動で書き換わります。(同じ設定で保存しても書き換わるかもしれませんが。)
アナリティクス、Search Consoleへの登録
Googleアナリティクスやsearch Consoleなどの使用しているウェブツールに対して、新しいURLの登録をします。
adsenseを使っていてサイト認証をしている方は、サイトの変更もします。
以上、すぐできる!Wordpressのドメインを同一サーバ内で移転する6ステップの方法でした。お疲れ様でした。