記事の詳細
WebARENAのSuiteXに2つのWordPressをインストールして動かす方法
NTTPCコミュニケーションズさんが提供しているのレンタルサーバーサービスの「WebARENA」を利用しているお客様からマルチドメインでWordPressをインストールして運用したいというご依頼がありました。
お安い御用ですよ~!ということで引き受けたのですが、ちょっとばかり苦戦したので備忘録&誰かのお役に立つかもしれないということで記録に残しておきたいと思います。
今回のブログの見出しはコチラです!
WebARENAでマルチドメインを使用する時のディレクトリ構成
WebARENAの環境におけるWWWのルートディレクトリはhomeです。マルチドメイン環境にする場合は「マルチドメイン設定ツール」を使って.htaccessを生成することで、homeにアクセスしてきたセッションを.htaccessで指定したディレクトリにリダイレクトすることでマルチドメインを実現しています。
例えば、マルチドメインとして2つのドメイン(parent.comとchild.com)を設定する場合、それぞれのドメインにおいて、一方のparent.comを親ドメイン、child.comを子ドメインと定義することになります。
親ドメイン:parent.com
子ドメイン:child.com
このようにドメインを設定している場合、homeディレクトリ以下は次のように構成しておく必要があります。
1 2 |
home ┗ child.com |
このようなディレクトリ構成としておくことで、それぞれのドメインにアクセスした時の参照先は以下のようになります。
parent.com → home以下を参照
child.com → home/child.com以下を参照
親ドメインと子ドメインにWordPressをインストールしてみたら子ドメインのWPで404エラーが!
このように一見簡単に思えたWebARENA環境でのマルチドメイン運用ですが、親ドメインと子ドメインのどちらにもWordPressをインストールして動作確認をしていたところ、子ドメインで404エラーが発生することが分かりました。(以下はインクループのWEBサイトの404の例)
どうやらパーマリンク設定でデフォルト(http://child.com/?p=1234みたいなやつ)にしていれば問題ないのですが、ディレクトリ階層が存在するようなパーマリンク(http://child.com/blog/2016/11/1234)を設定すると、「404 Not Found」になってしまうという現象発生しているようです。
ちなみに現状のディレクトリ構成はこんな感じです。
1 2 3 4 5 6 7 8 9 10 |
home ┣ wp ← 親ドメイン parent.com用のWordPress ┃ ┣ wp-admin ┃ ┣ wp-content ┃ ┗ wp-includes ┗ child.com ┗ wp ←子ドメイン child.com用のWordPress ┣ wp-admin ┣ wp-content ┗ wp-includes |
プレーンのHTMLファイルで構成されたWEBサイトなら問題ないので、WordPressの.htaccessでmod_rewiteを使っているので、そのあたりなんだろうなぁ・・と予想。
マルチドメイン設定ツールで生成した.htaccessについて
というわけで、.htaccessを修正すれば直るはず!ということでまずはWebARENAのマルチドメイン設定ツールで作った.htaccessから見ていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
AddHandler application/x-httpd-php53 .php # Enable RewriteEngine. RewriteEngine On # 404 Error for Multidomain Directories. RewriteCond %{HTTP_HOST} ^parent.com$ RewriteCond %{REQUEST_URI} ^/(child.com)/ RewriteRule ^(.*)$ /$1 [L,R=404] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(child.com) RewriteCond %{REQUEST_URI} !^/(child.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] |
まず最初の404 Error for Multidomain Directoriesとコメントが入っているほうですが、これは簡単に言うと、home以下にchild.comというフォルダがあるので、parent.com/child.comというURLでアクセスできてしまうのを禁止するために、もしこのURLでアクセスしてきた時には404とするための記述です。
次にMain RewriteRule for multidomainのコメントのほうですが、HTTP_HOSTがchild.comの時には、入力されたURLでアクセスしていいよ~という感じです。
一見、これで大丈夫じゃ?って思ってしまいますが、親ドメインにも子ドメインにもWordPressをインストールしている場合、先にも述べたようにディレクトリ階層があるようなパーマリンクに設定すると404になってしまい固定ページや投稿を見ることができません。
2つのWordPressをインストールしている場合の.htaccessの記述
いろいろ試して辿り着いた結果、以下のように.htaccessを書けば、WebARENAのマルチドメイン環境で親ドメイン、子ドメインの両方にWordPressをインストールしている場合でも正常にパーマリンクが作動します!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
AddHandler application/x-httpd-php53 .php # Enable RewriteEngine. RewriteEngine On # 404 Error for Multidomain Directories. RewriteCond %{HTTP_HOST} ^parent.com$ RewriteCond %{REQUEST_URI} ^/(child.com)/ RewriteRule ^(.*)$ /$1 [L,R=404] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(child.com) RewriteCond %{REQUEST_URI} !^/(child.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/index.php [L] |
なんと、マルチドメイン設定ツールで生成した.htaccessの一番最後にindex.phpを追加しただけ!で解決できました。
[14行目] RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/index.php [L]このindex.phpを追加した.htaccessはhome直下に置きます。
1 2 3 4 5 6 7 8 9 10 |
home (※index.phpを追加した.htaccessを設置) ┣ wp ← 親ドメイン parent.com用のWordPress、WordPressの.htaccessを設置 ┃ ┣ wp-admin ┃ ┣ wp-content ┃ ┗ wp-includes ┗ child.com ┗ wp ←子ドメイン child.com用のWordPress、WordPressの.htaccessを設置 ┣ wp-admin ┣ wp-content ┗ wp-includes |
WebARENAでマルチドメイン&WordPressで運用する場合は注意
今回は親ドメインも子ドメインのどちらにもWordPressをインストールしたので苦戦してしまいました。
結果的にはできているのですが、マルチドメイン運用でどのドメインでもWordPressで運用するというのが一般的に行われている現状において、WebARENAのこの設定のしづらさはちょっと厳しいものがあると思います。正直、初心者にはお薦めできません。
マルチドメインでWordPressを運用するなら、さくらインターネットであればドメインのパスを設定するだけですし、エックスサーバであればドメインの追加設定をするだけで簡単にできてしまいます。.haccessの編集する必要はありません。
個人的にはエックスサーバの管理画面が分かりやすいので好きです。
WebARENAでマルチドメイン&WordPressで運用する場合はご注意を!
コメント
この記事へのトラックバックはありません。
当方もwebarenaを使っており、
全く同じ問題で困っておりました。
こちらのページをみて問題が解決したのですが、
私の環境ではもう一つ別の問題が出てしまいました。
解決策をご教授いただけないでしょうか?
当方の環境は以下のような感じです。
— 環境 ここから —
home(.htaccess設置)
├wp(.htaccess設置)⇒親ドメインのWordPress
│├wp-admin
│├wp-content
│└wp-includes
├sub1.com(.htaccess設置)⇒サブドメインのWordPress
│└wp
│ ├wp-admin
│ ├wp-content
│ └wp-includes
└sub2.com(.htaccess設置)⇒静的HTMLページ
├index.html
└aaa
└index.html
— 環境 ここまで —
記事にあります通り、
RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/index.php [L]
これを記述することで、子ドメイン(sub1.com)のwordpressの問題は解決しました。
しかしながら、
http://sub2.com
が表示されなくなってしまいました。。。
ここにはindex.phpは置いておらず、
代わりにindex.htmlがあります。
また、
http://sub2.com/index.html
と打ち込めば表示されます。
なんとか解決方法をご教授願えませんでしょうか?
どうぞ、よろしくお願い申し上げます。
コメントありがとうございます。
現状で分かる情報から判断すると、おそらくですが、
「sub2.com」ディレクトリ以下の.htaccessに
RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/index.html [L]
を追記することで表示されるようになるのではないかと思います。
試していただだけますでしょうか?
どうぞ宜しくお願い致します。
早速のお返事ありがとうございました。
HTMLページは無事表示されました。助かりました。
当方、別の子ドメインにMovable Typeも入れております。
Movable Typeはサイト構築のときにHTMLを吐き出しますので、
その子ドメインも同じやり方で表示できると思っておりましたが、
何故か500エラーが出てしまいます。。。
こちらの設定のために四苦八苦しましたが、解決に至らず。
ご返信が遅れてしまい申し訳ございません。
もうMovable Typeは辞めようかと思っております。
なんにせよ、大変たすかりました。ありがとうございます!
解決したみたいで良かったです!
MovableTypeは弊社でも以前は1社だけお使いだったのですが、
現在では皆さんWordPressになってしまいました。
お役に立てて光栄です。
引き続き、インクループを宜しくお願い致します。