dポイントプレゼントキャンペーン実施中!

apache2.2で、ヴァーチャルホストで複数ドメインを使用しています。

httpd.confの共通指定部分?に<Directory>や<Files>で下記のような指定したことが無視されます。
・・・ヴァーチャルホスト設定部分の中に指定してもダメでした。

<Directory /home/user/html/aaa/bbb>
Order deny,allow
Deny from all
</Directory>

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

DirectoryMatchやFilesMatchも無視されます・・・
しかし、LocationとLocationMatchでやった場合は機能しました。

ちなみに、.htaccessに
Order allow,deny
Deny from all
と、書いても無視されました・・・(リダイレクトや書き換えなどは使用できたので.htaccess自体は機能していると思うのですが)

coreモジュールは入っています。
mod_authz_hostは、LoadModuleで読み込んでいます。
それ以外のモジュールが必要なのでしょうか?

なぜ、Locationは使えるのに、DirectoryやFilesは使えないのでしょうか?
原因がさっぱりわかりません。詳しい方よろしくお願いします。

A 回答 (1件)

<Location> だけが有効になるということは、


ファイルの後ろの方や、バーチャルホスト内に
相反する内容(アクセスを許可する内容)の別の記述が
あるではないかと推測します。
例えば、次のような記述がありませんか。

<Location />
Order deny,allow
Allow from all
</Location>

なお、<Directory> や <Files> よりも <Location> が優先されます。
バーチャルホスト内の指定は、あとから上書き適用されます。
詳細な適用順序のルールは以下リンク先をご覧になって下さい。

http://httpd.apache.org/docs/2.2/en/sections.htm …
http://httpd.apache.org/docs/2.2/ja/sections.htm … (翻訳版)

リンク先ページの末尾に掲載されている例のように
別の <Location> 等が記述されていないか確認してみて下さい。
Include で読み込まれる別ファイル内の設定にもご注意下さい。

参考URL:http://httpd.apache.org/docs/2.2/en/sections.htm …
    • good
    • 0
この回答へのお礼

ありがとうございました。おかげさまで2日間悩んでいたことが解決いたしました。
しばらく前にどこかのページで見つけた、指定したIPなどを拒否するための下記の内容が記述されていました。下記内容を修正したら問題なく動作するようになりました。
<Location />
Deny from env=deny_user
</Location>
・・・上記はdeny_user指定したユーザー以外には無関係だと思っていました・・・それ以外はAllowになってしまっていたという事でしょうか!?・・・そしてLocation が最優先される事を知りませんでした。よい勉強になりました。
ありがとうございました。

お礼日時:2012/02/07 15:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!