先月、FreeBSDの4.11から6.2に移行させて自宅Web鯖を運用していたのだが、掲示板へのスパムが相変わらず鬱陶しいので、面倒だけど対策せねばと作業していてひょっこり変な事に気づいた。ApacheのIndexesが効いていて、ディレクトリ指定されるとファイルが丸見えになっているのだ(汗
こんな状態じゃ何やっても無駄だし、一ヶ月恥書きっぱなしかよと思いつつ、Apache22のconf書き換え格闘開始。FreeBSD 4.x系ではApache1.3系を使っていたので、Apache2x系が面倒に感じる。なんで一々confファイルを分割すんねんっ。鬱陶しいわ。とか文句言いながらやっていてもらちがあかないので(何故か設定が効かない)、.htaccessで対処する事にした。
しかし、.htaccessが効かないっ。なんで?なんで?
Option Indexes を外したりしたけど、どうしてもファイルが丸見えになってしまう。
30分ばかりかかって一通り調べてようやく分かった。
鯖の復旧(移行)作業時に端折って、DocumentRootをそのまま(放置)にしていたのが原因の発端だ。今まで使っていたドキュメントルートはさして重要ではないから復元せずにHDDに保存したままにしている。Apacheはディレクティブが別れているので、ドキュメントルートはそのままでも関係ないと思いきや、なんの全部それが反映されるという仕組みだ。つまり子ディレクティブや.htaccessで何やっても意味がない。あー紛らわしいっ。
AllowOverride None
httpd.confに書かれた、たったこの一行が全てのUserDir、つまりはバーチャルホストにも影響していたという訳だ。
AllowOverride All
なぜ最初からこうしておいてくれないのか?マジにconfファイルを分割したの鬱陶しい。1.3系の方に慣れてるから仕方ないんだけど絶対に2.x系のconfiファイルは不便過ぎる。
.htaccessにはもちろんこう書いた
Options -Indexes
という訳で自分の確認不足が露呈してしまったのだが、1.3系で細工していたのが殆ど機能せず、構成ファイルが丸見えになっていたのは情けなさ過ぎるというか間抜けというか。まぁこれが半年先とかにならなかったのが不幸中の幸いかも知れないのだが。横着せずに全部のチェックしていかないと駄目って事か。いやぁ、たかがWebサーバ、されどWebサーバですな。 Apacheを全然使いこなせてないじゃん..orz


コメント