XREAでサブドメインを動的に生成する方法

XREAで独自ドメインを使用する場合、ドメインウェブ設定でdefault.example.comのように設定すると、キャッチオール扱いとなり、すべてのサブドメインを受け取ることが出来ます。
この機能を使用して、サブドメインを動的に設定する方法を使ったのでメモ。

なお、この記事はこちら(XREA.COMで.htaccessだけ でバーチャルドメイン(ホスト)を実現する方法)のページを参考にしています。

ちなみにうちのドメインの運用方針は以下。
・サブドメイン用のフォルダがサーバーに存在する場合、そちらを表示
・それ以外サブドメインでアクセスした場合、サブなしのドメイン(d-nest.net)に転送


作業手順を順に書くと次のようになります。

ドメイン名をexample.com、使用するサブドメイン名をsubdomain.example.com、XREAサーバーのIDをXREA_IDとします。

(1)管理画面からドメインウェブの設定で、default.example.comとexample.comを設定
(2)管理画面からドメインウェブの同期設定で、default.example.comを同期元、example.comを同期先に設定(SSHなどでシンボリックリンクを作成してもOK)
(3)FTPまたはファイルマネージャーでpublic_html以下にdefault.example.comという名前のフォルダを作成
(4)default.example.comフォルダ内に.htaccessファイルを設置。中身は以下。

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteCond /virtual/XREA_ID/public_html/default.example.com/%{HTTP_HOST}/ -d
RewriteRule ^(.*)$ %{HTTP_HOST}|$1| [C]
RewriteRule ^([^.]+\.example\.com)\|(.*)\|.*$ $1/$2 [L,QSA]
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteCond /virtual/XREA_ID/public_html/default.example.com/%{HTTP_HOST}/ !-d
RewriteRule ^(.*)$ http://example.com/$1 [L,QSA]
(5)default.example.comフォルダ内に、サブドメイン名のフォルダを作成する。subdomain.example.comなど。
(6)subdomain.example.com内にも.htaccessファイルを設置。中身は以下。
RewriteEngine off
(別の.htaccessを設置しても問題ありません。その時はRewriteEngine offの記述は不要です)
(7)サブドメインなしの.example.comで表示するファイルを/virtual/XREA_ID/public_html/default.example.comフォルダ以下に設置。
(8)サブドメインのsubdomain.example.comで表示するファイルを/virtual/XREA_ID/public_html/default.example.com/subdomain.example.com以下に設置

コメントをどうぞ