SOY CMS でサイトを制作して、ドメイン直下にページを公開したい場合は「ルート設定」をします。
その意味や方法についてはマニュアルを見ていただくとして、今回のテーマは「ルート設定からの逃れ方」。
サーバーによっては、コントロールパネル(管理画面、以下「コンパネ」)がサイトと同じ階層(FTPで見えるところ)にあったり、全然別のURLなのにあたかも同じサーバーに乗っかってるような設定になっているところがあります。
(すんません。何を書いてるか自分でもよく分からないんですが、同じ状況になった人なら分かってくれると思います。たぶん)
で、そんな場合に SOY CMS のルート設定をすると、コンパネにアクセスできなくなったりすることがあるワケですね。
僕の場合は「404 Not Found」エラーになりまして、SOY CMS で設定した「見つかりません」ページが空しく表示されるばかり。
試しにルート設定を外してみると、コンパネにアクセスできるようになります。
再度設定すると、やっぱりまたアクセスできない。
うーん……、ルート設定に原因があることは間違いないみたい……。
これは困った。
……んですが、いろいろ試していると運良くうまくいく方法があったので、備忘も兼ねてご紹介しておきます。
自動生成された「.htaccess」を編集して、除外してやる
僕が関わっていた件の場合、コンパネのディレクトリ(というかURL)を特定することができました。
ということは、「ルート設定」の対象からこのディレクトリだけを除外してやれば良いはず。
ということは、「ルート設定」をしたときに SOY CMS が自動的に生成する「.htaccess」を編集すればいけるんじゃないか。
と踏んだワケです。
ちなみに、SOY CMS が自動生成する「.htaccess」は次の通り。
# @generated by SOY CMS at 2010-04-05 18:24:54
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.htm !-f
RewriteCond %{REQUEST_URI} !/index.php/
RewriteRule ^(.*)$ index.php/$1 [L]
#---SOY CMS end of htaccess file --
じっくり見てみると……。
お、「!/index.php/」てのがありますね。
「!」って、正規表現で言うところの否定ですよね。
ということは、たぶん「/index.php/」じゃなかったら、って意味ですよね。
だったら、ここに除外したいディレクトリを入れたらいけんじゃね?
という感じで、以下のようにしてみました。
# @generated by SOY CMS at 2010-04-05 18:24:54
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.htm !-f
RewriteCond %{REQUEST_URI} !/index.php/
RewriteCond %{REQUEST_URI} !/hoge_conpane/
RewriteRule ^(.*)$ index.php/$1 [L]
#---SOY CMS end of htaccess file --
ビンゴ!
うまくいきました。
コンパネも表示されるようになりましたし、ルート設定も問題ないようです。
(もちろん他にも色々調べたり検証したりしたですって。単なる当てずっぽうじゃないんですって)
もし書き方がおかしかったり、もっと良い方法があれば教えてください。
見ての通り、詳しい方ではないので。
とりあえず今回はディレクトリ(というかURL)を特定できたので、「そこを除外すればOK」という単純な方法で解決できました。
が、それ以外のケースもあるでしょうから、それはまたぶつかったときに考えたいと思います。
(いや、考えないといけないことがないことを祈りますけど)
雑感など
それにしても、ルート設定って、SOY CMS 内で管理してる特定のサイト(ディレクトリ?)にだけ効果があるものだと思ってたんですけど、そうでもないんですね。
サーバーのことを分かってる人からすると「なーにを今さら。ケッ!」って感じなのかも知れないですけど、僕のように「CMS の導入は出来るよ。でもカスタマイズはほとんど出来ないよ」というくらいのレベルの人間にとってみたら、今回のような事象は非常にビックリなのです。
いや、本当に焦った……。
日々勉強、そして経験、ですなぁ。