blosxomとさくらのレンタルサーバのApacheにまつわる問題点
〔このHPのこと〕 21:49 No Comment ツイート
書いておかないと後で''ぜってー忘れる''ので、忘れないうちにメモしておく。
というか過去の記事を漁るともしかすると過去に同じ問題に遭遇していたかもしれないけど探すの面倒なのでやめた。
- 1.環境変数を追加できない
- Apacheには環境変数モジュール(mod_env)というものがあり、これで環境変数を制御しているが、さくらのレンタルサーバではCGIを実行する際の環境変数は制御できない。
- ホストにログインした際の環境やCRONを実行する際の環境は制御できる。
- blosxomでユーザー環境変数を使いたかったのだが諦めた。さくらのレンタルサーバはsuExec環境なので当然と言えば当然であるが、すっかりド忘れしていたのでアホだ。
- 2.MultiViewsオプションを無効化できない
- MultiViewsとはApacheの「コンテントネゴシエーション」モジュールで提供されている機能の一つ(多分)で、リクエストURIにファイル名のみ(拡張子を除いて)しかなく、かつ同名のディレクトリが存在しなかった場合、該当ディレクトリ内の同名の拡張子付きファイルを勝手に探し出してページに表示してしまう機能である。
- 例を挙げると、"http://hogefuga.jp/test/unko"をリクエストしたが"unko"ディレクトリが存在せず、"test"ディレクトリ内に"unko.conf"ファイルが存在した場合、「あ、これきっと"unko.conf"ファイルのことなんだね」とか勝手に解釈してファイルの中身を表示したりする。
- "unko.conf"、"unko.cgi"、"unko.log"等と複数のファイルがあった場合、「たぶんこのユーザーは"unko.cgi"がほしいんじゃないかな」とかその都度選別してファイルの中身を表示したりCGIを実行したりする。
- なお、末尾にスラッシュついてようがついていまいがお構いなしに勝手にファイルとして解釈する。
- さくらのレンタルサーバの場合、Optionsがユーザー側で設定できないため、無効化することすらできない。
- なおMultiViewsは基本的にMIMEが認識している拡張子を探し出す、という動作をしていた。なのでそこんとこをなんとか無効化できないかとあれこれ試してみたがどれもうまくいかなかった。
- MultiviewsMatchというOptionは操作できるが、これは要はマッチタイプを追加する機能であって、減らすことはできない。
- リライトモジュール(mod_rewrite)で上書きできないかと試してみたが、RewriteよりMultiViewsが優先されており、先にファイルにアクセスされてしまった。どうしようもない。
- これはもう単純に、''ディレクトリ内に同名のファイルとディレクトリは作らない''ことで回避するしかない。
- なおblosxomの場合、「CGIを設置しているディレクトリ内のファイル名」と、「エントリを保存しているディレクトリ内のサブディレクトリ名」が重複しないようにしなければならないので、注意すること。めどい。
- なるべくblosxomの設定ファイル名を変えずに使いたかったのだが諦めた。早々に諦めればよかったのにあれこれと抗った挙げ句に結局できなかったのでアホだ。
ま、何が言いたいのかと言うと blosxom 2.1.2 を導入しようとしてなるべくblosxom.cgiを改変することなく使いたかったのだができなかったのでアホだ。