iso tank - このHPのこと 2014年 02月

blosxomとさくらのレンタルサーバのApacheにまつわる問題点

書いておかないと後で''ぜってー忘れる''ので、忘れないうちにメモしておく。

というか過去の記事を漁るともしかすると過去に同じ問題に遭遇していたかもしれないけど探すの面倒なのでやめた。

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を改変することなく使いたかったのだができなかったのでアホだ。

2019/08/29 追記

さくらのレンタルサーバの仕様変更によりMultiViewsは使用可能になった

コメント投稿ルールについて(2014/02/09時点)

まぁこんな糞ブログ今となっては誰も見ていないわけですし、コメント投稿するのは糞スパム業者しかいない訳ですが、 未来の自分の為(ぜってー設定とか忘れるので)にも、コメント投稿のルールを記載しておきます。

  • 本文がない投稿は許可されておりません。
  • 不正なリファラの投稿は許可されておりません(正しいリファラでない・リファラがない、など)。
  • HTTPヘッダー情報が不正な投稿は許可されておりません。
  • 日本語(漢字・ひらがな)の含まれていない投稿は許可されておりません。
  • スパム等が確認されたIPアドレスからの投稿は許可されておりません。
  • その他、種々の事情により投稿が許可されない場合があります。

以上、よろしくお願い致します。