マルチドメイン環境その2

管理側と公開側でURLを分けたい場合として、「さくらのスタンダードで複数ドメイン運用」という記事を書きましたが今回はそれと少し違った場合です。

THE HAM MEDIAさんの記事「マルチドメイン設定でSOY CMSが未だにうまくインストールできない」で書かれているような環境での動作についてです。

例)
公開側URL http://localdomain/
公開側パス /home/www/htdocs
管理側URL http://cms.localdomain/
管理側パス /home/www/htdocs/cms

このように、管理側と公開側でURLを完全に切り分けたい、という要望です。

このような設定を行うには簡単にはVirtualDocumentRootを使います

<VirtualHost *:80>    
    ServerName local
    VirtualDocumentRoot "/home/www/htdocs/%1"
</VirtualHost>

<VirtualHost *:80>
    ServerName localdomain
    DocumentRoot "/home/www/htdocs/"
</VirtualHost>

VirtualDocumentRootを使うことで、たとえばサイトIDがtestのサイトを作成した場合はhtto://test.localdomain/で自動的に公開出来ます。

さて、現状このような方法は出来ません。なぜかというと、VirtualDocumentRootを使った場合はDocumentRootの場所が期待した形にならないからです。

例えばhttp://cms.localdomain/admin/index.phpでサーバ変数を取得した場合、DocumentRootには以下のような値が入ります。

/home/www/

期待しているDocumentRootは

 /home/www/cms

なので少し違いますね。

なのでちょっと仕組みを考えてみました。

元々、サイトの作成ディレクトリについてはuser.config.phpで変更できるようになっていました。
それにいくつかの設定項目を追加して変更できるようにします。

変更を加えたバージョンを暫定公開しますので、興味のある方はダウンロードしてみてください。

user.config.php.sampleをuser.config.phpにリネームして使ってください。

※このバージョンは開発中のものです。既存のサイトには決して使用しないでください。
また、プラグインなども同梱されていません。必要な方は1.2.5aのプラグインを使ってください。

PHP5.2.1(CGI) on Windows以外では動作確認を行っていません。またどこかに不具合が生じるかもしれませんので扱いにはくれぐれも注意してください。

●設定方法

user.config.phpファイルを開き以下のように書き換えます。

//サイトを作成するディレクトリを指定する(デフォルトはドキュメントルート)。
define("SOYCMS_TARGET_DIRECTORY", "/home/www/htdocs/");

//公開側のURL
define("SOYCMS_TARGET_URL", "http://localdomain/");

//管理側のドキュメントルートを動かす場合に指定
define("SOYCMS_ADMIN_ROOT", "/home/www/htdocs/cms");


公開側のURLはディフォルトで作成されるURLです。

例えばサイトIDがtestのサイトを作った場合は「http://localdomain/test/」というURLに自動で設定されます。

ユーザの環境に応じて上のパスなどを変更してください。

 

うまく動作すれば次バージョンから導入される予定です。

Blog Post

Comments

Trackbacks