MODx Revolution 2.0.0: ヴァーチャルホストを利用してフォルダからサブドメインを作成する
MODx Revolutionの新機能「コンテキスト」に引き続き、コンテキストを利用してヴァーチャルホストでサブドメイン(ドメイン)を運用する方法です。
Apacheのhttp.confを変更できるサーバー、ドメインを割り当てるディレクトリを変更できるサーバー(XREA / CoreServerなど)での方法になります。
ドメインごとにディレクトリを作り、そこにindex.php(コネクタ)を置くという他のCMSでも馴染みのある方法です。他のCMSと異なるのは、管理画面上でほぼ全ての設定を変更できる点です。
なお、あらかじめ、システム設定から「フレンドリーエイリアスの使用」「フレンドリーURLの利用」「フレンドリーパスを使用」を有効にしておく必要があります。
以下、MODx Revolutionのドキュメントの翻訳です。
ヴァーチャルホストを利用してフォルダからサブドメインを作成する
このケーススタディはコンテキストの使用例で、単一のRevolution内で管理できる異なるサブドメインを作成します。では、サブドメインをdev.modxcms.com(もちろん、実際のものではありませんが、想像はしやすいでしょう)で作成してみましょう。
コンテキストを作成する
まず、システム -> コンテキストと進みます。次に、新しいコンテキストを作成します。このコンテキストを "dev" と呼ぶことにしましょう。
それから、左側のリソースツリーで "Dev Home" というリソースを作成し、 "dev" コンテキストのルートに配置します。そのまま、"documentation"というエイリアスを持つ "Dev Docs" リソースも作成してしまいましょう。これは、コンテキストのリンクをテストするために使うつもりです。
ツリーはこのようになります:
ここから、ツリー内の "dev" コンテキストを右クリックして、 "コンテキストの編集" をクリックします。ここでコンテキスト設定のタブが表示されます。そこをクリックして、いくつかの設定を追加する必要があります:
- site_start - ここに "Dev Home" リソースのIDを設定します。 (この例の場合は "2" )
- base_urlを - ここに "/" (引用符なし)を設定します。基準となるルートのURLを作成するためです。
- http_host - ここに "dev.modxcms.com" を設定します。 (または、あなたのサブドメイン名)
- site_url - ここに "http://dev.modxcms.com/" を設定します(または、あなたのサブドメインのURL)。末尾のスラッシュを忘れないでください。ここでの設定は (scheme + http_host + base_url ) であるということを覚えておいてください。
コンテキスト固有の他の設定も追加できます。例えば、 error_page 、 unauthorized_page などです。
注: もし、このコンテキストから 'web' コンテキストへ戻るためのリンクを張ろうとするなら、'web' コンテキストへ同様のコンテキスト設定(もちろん、 'web' コンテキスト固有の値です)を追加したいと思うかもしれません。これによって、 'web' コンテキストへ戻るためのリダイレクト先URLをMODxに知らせることができます。
設定を作成したら、サイトのキャッシュを削除してください。
ヴァーチャルホストを作成する
さて、Apacheの作業を行う必要があります。(もし、Apacheを利用していない場合でも、同様の考え方に従って、少なくともサーバーのカスタマイズはできるはずです。)Apacheの httpd.conf ファイルに移動し、これらの行を追加、ドメイン名の変更を行ってください:
NameVirtualHost dev.modxcms.com
<VirtualHost dev.modxcms.com>
ServerAdmin dev@modxcms.com
DocumentRoot /home/modxcms.com/public_html/dev
ServerName dev.modxcms.com
ErrorLog logs/devmodxcms-error_log
TransferLog logs/devmodxcms-access_log
</VirtualHost>
Apacheの導入時に、 VirtualHost と NameVirtualHost のパラメーターでサーバーのIPアドレスを設定することを要求されるかもしれません。それでも大丈夫です。重要なのは ServerName の項目です。 もちろん、あなたが dev.modxcms.com とは異なるサブドメインを作成している場合は、これらの値を変更してください。
いいでしょう!サーバーを再起動してください(優雅にapachectl)。
サブドメインファイル
さて、サブドメインを読み込むために、実際のファイルを作成する必要があります。 "dev/" というサブディレクトリを "/home/modxcms.com/public_html/" に作ります(または、ウェブルートのあるベースパスならどこにでも)。
3つのファイルをMODx Revolutionのルートディレクトリからコピーする必要があります:
- index.php
- .htaccess
- config.core.php
これらを dev/ ディレクトリにコピーしてください。
そうしたら、これらを編集します。
index.php
index.php からこの行を探して編集してください(最後の辺りです):
$modx->initialize('web');
'web' を 'dev' へ変更してください。ファイルを保存して閉じます。
.htaccess
編集する必要があるのはこの1行だけです(あるいは、全く必要ないかもしれません)。この行を探してください(最初の辺りです):
RewriteBase /
他のものではなく / に設定していることを確認してください。これは、先ほど設定した base_url というコンテキスト設定と一致していなければなりません。
最後の一歩
再度、サイトのキャッシュを削除し、リソースツリーを更新、それから "Dev Home" ドキュメントから 'プレビュー' をクリックしてください。次のURLですぐにそのページが表示されるはずです:
http://dev.modxcms.com/
[[~3]] のような"Dev Docs" リソースへのリンクを "Dev Home" リソースに作成してください。ページをリロードします。リンクが適切に生成されていることに注目してください:
http://dev.modxcms.com/documentation.html
これで、全て完了です!

