ロリポップのサーバにWordPressを2つ入れてそれぞれに独自ドメインを
割り当てようとしたところ、予想外に手間取ってしまったので、その備考録。
なぜWPでマルチサイトにしなかったのかは、作った時期が違っていたのと
同じクライアントさんだけど、別サービスで別担当者だったためです。
まず構成としては、元々「http://hogehoge.com」として使用しているサーバに
静的サイトで一つサイトで運営していて、その下にディレクトリを一つ作って
WPをインストールして「http://hogehoge.com/service」として運営していました。
これを、「http://hogehoge.com」の静的サイトもWPにして
かつ「http://hogehoge.com/service」を「http://service.com/」のように
別ドメインを割り当てようとしました。
実は別のサイトでも同じサーバ内の別WPに別ドメインを割り当てたことがあるので
軽く考えていたんですが、思いもかけずつまづいてしまいました。
図のように
「http://hogehoge.com/main」にインストールしたWPに「http://hogehoge.com/」
元々の「http://hogehoge.com/service」のWPに「http://service.com/」
にしようと、ロリポップ側でドメインの設定すると、
「http://hogehoge.com/main」に「http://hogehoge.com/」を
割り当てると、「http://hogehoge.com/service」が500エラーが連発で
アクセスできなくなってしまいました。
そのためWPにログインもできなくなったので
phpMyAdminに入って直接MySQLのデータを変更してなんとか復旧。
原因を考えると別のところで運営しているマルチドメインは
一つのWPをルートディレクトリにインストールして、
もう一つを別ディレクトリにしているので、
「http://hogehoge.com/」を特定のディレクトリに割り当てると
他のディレクトリへのパスが変わってしまうか、ということなのか。
考えてみれば当然なのですが、念のためロリポップに問い合わせて
「http://hogehoge.com/main」に「http://hogehoge.com/」を
割り当てると、他のディレクトリは「http://hogehoge.com/main」以下になる
という回答を得ました。
そこで先に「http://hogehoge.com/service」を「http://service.com/」を設定、
問題なくアクセスできることを確認。
次に、「http://hogehoge.com/main」はロリポップでのドメインの設定をしないで
「/main」内の「index.php」を一つ上(ここではルート直下)にコピー。
「index.php」ファイルの一番下の
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
を
require( dirname( __FILE__ ) . '/main/wp-blog-header.php' )
とパスを変更。
更に「/main」内の「.htaccess」(多分自動でできていると思われる)の
# 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
の「RewriteBase /」の項目と「RewriteRule 」の項目のパスを
「/main」の下になるように
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /main/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /main/index.php [L] </IfModule> # END WordPress
と変更。
もちろん、WordPressのダッシュボードの「一般設定」も変更。
ここを間違えるとまたphpMyAdminにもぐらなればなりません。
ここでは「/main」と指定。
ただし、「http://service.com/」の方はどちらも「http://service.com/」でOK。
そのかわり、「http://hogehoge.com/」にログインするときは
「http://hogehoge.com/main/wp-login」
にアクセスする必要があります。