Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。

btmup Blog

CMS

SOY CMS でルート設定するとアクセスできなくなってしまうディレクトリを救出する方法

投稿日:

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 の導入は出来るよ。でもカスタマイズはほとんど出来ないよ」というくらいのレベルの人間にとってみたら、今回のような事象は非常にビックリなのです。
いや、本当に焦った……。

日々勉強、そして経験、ですなぁ。




-CMS
-, ,

Copyright© btmup Blog , 2024 All Rights Reserved Powered by AFFINGER5.