BaseCMSのなかにBaserCMSを設置した場合の.htaccess
nagachan > BaseCMSのなかにBaserCMSを設置した場合の.htaccess @ 2015/1/21 18:01 |
---|
みなさん、こんにちは。
ドキュメントルートにBaserCMSサイトを設置していますが、もう一つサイトを作ることになり、 「/app/webroot/」の下に「member」というフォルダを作成して新規インストールしてみました。 とりあえずインストールは成功しましたが、追加したサイトへのアクセスを「http://xxxx.jp/member/」にしたいと思い、.htaccessをいじり回してみました。 以下の設定で、「http://xxxx.jp/app/webroot/member/」でアクセスするようになりましたが、「/app/webroot」部分を削って、「http://xxxx.jp/member/」でアクセスできるようにしたいのですが可能でしょうか。 「/app/webroot/member/」の.htaccess
「/app/webroot/member/app/webroot」の.htaccess
ご教示のほど、よろしくお願いいたします。 ■ BaserCMSのバージョン:3.0.6.1 ■ スマートURLの利用:ON ■ 設置フォルダ:サブフォルダ ■ 利用しているデータベース:MySQL ■ PHPスキル(自己評価):D |
n1215 > Re: BaseCMSのなかにBaserCMSを設置した場合の.htaccess @ 2015/1/24 1:13 |
---|
nagachan 様
まずはじめに、xxxx\.jpは取得可能なドメインなので、 例示のために予約されているexample.comなどで表記していただいた方が良いかと思います。 (現状Webサイトは設置されていないようですが、今後http:// xxxx.jp/member/ に悪意あるページが設置される可能性もゼロではありません。) さてご質問についてですが、 .htaccessのURLリライトの動作について理解する必要があるかと思います。 説明の単純化のため.htaccessの番号を振ります。
●.htaccessによるリライトの流れ まずはドキュメントルートに設置したbaserCMSの前段のWebサーバ(Apache)による.htaccessの処理の流れについて見てみましょう。 .htaccessが有効な状態で、 http://example.com/path/to/file へのアクセスがあったとすると、 Webサーバ(Apache)は.htaccessを深い階層のものを優先して適用します。 1.{ドキュメントルート}/path/to/.htaccess 存在せず 2.{ドキュメントルート}/path/.htaccess 存在せず 3.{ドキュメントルート}/.htaccess (1)存在するので適用 (1)の.htaccessは
となっているので、パスは{ドキュメントルート}/app/webroot/path/to/file向けに書き換えられます。 さらにWebサーバ(Apache)は下記の優先順位で.htaccessを適用します。 1.{ドキュメントルート}/app/webroot/path/to/.htaccess 存在せず 2.{ドキュメントルート}/app/webroot/path/.htaccess 存在せず 3.{ドキュメントルート}/app/webroot/.htaccess (2)存在するので適用 4.{ドキュメントルート}/app/.htaccess 存在するが(2)によって上書きされている 5.{ドキュメントルート}/.htaccess (1) 存在するが(2)によって上書きされている (2)の.htaccess
となっているので、/app/webroot/path/to/fileというファイルやディレクトリが存在しなければそのままbaserCMSに処理が渡されます。 ●本題 上記のように、2つの.htaccessが協調して動いているということがわかりました。 方針としては、{ドキュメントルート}/member/hogehogeは最初に(1)の.htaccessで処理されるので、その段階で、 下位のbaserCMSの(4)の.htaccessに処理が渡るようにリライトすればいいことになります。 ((3)を経由してもいいですがややこしいかなと) (1)の.htaccess
(4)の.htaccess
さらに下位のbaserCMSのinstall.phpを変更します。 {ドキュメントルート}/app/webroot/member/app/Config/install.php
サーバの設定によっては微妙に違う可能性があるのですが、こんな感じでいかがでしょうか。 最後にいまさらですが、2つ目のbaserCMSを {ドキュメントルート}/app/webroot/memberに設置するよりも {ドキュメントルート}/memberに設置したほうが設定が楽な気もしますね。 Twitter: @n_1215 |
nagachan > Re: BaseCMSのなかにBaserCMSを設置した場合の.htaccess @ 2015/1/24 9:10 |
---|
n1215 様
丁寧なご回答ありがとうございました。 細かくご説明いただき、大変参考になりました。 RewriteModureの仕組みはなかなか分かりにくいのですが、公式サイトのマニュアルにも掲載していただきたいほどのわかりやすい内容です。 URL表記の件は大変失礼いたしました。 早速試してみましたが、きちんと動作しない部分がありますので、きちんと整理して試してみたいと思います。 正常動作するようになりましたら、またご連絡いたします。 大変ありがとうございました。 |