作者: davi
日時: 2007/2/21(19:14)
Zazelさん  <  こん??は でび です

On Tue, 20 Feb 2007 22:23:52 +0900 (JST)
Zazel <zazel.ts@...> wrote:

> <Files ~ "^\.ht">の中でSatisfy Allに戻せば

仰るとおりでした。ありがとうございます。

なるほど、
http://httpd.apache.org/docs/1.3/sections.html#merginと
http://httpd.apache.org/docs/2.2/sections.html#merginでは、
明らかに2.2の方が記述が丁寧ですね。

> 必ずしも書かれた順番にはなりません。ディレクティブにより
> 前後します。

><Files> と <FilesMatch> を同時に 

とありますが、<Files>同士の場合は、<Files ~ "^\.ht">の定義が
<Files *>よりも後に解釈されると考えて良いような気もします。
実際は、どうなんでしょう?

というのも、コメントアウトしたB部分を生かすと、deny指定と
関係ない127.0.0.1からアクセスしても、AのAllow from allを
パスした後、Bの所でパスワード入力画面に行ってしまうんですよね。

かと言って、Bの所をSatisfy anyにしたら、何が何でも通せんぼ
ということにはなりませんし。

<Files ~ "^\.ht">の部分だけは、deny from allだから、
その指定でOKなんですけど。

<Files *>だけ、内容を分割して、下位ディレクトリに別置して
上書きルールをだます方法を考えてみたのですが、上手い案が
思いつきません。

ラベルを付けてジャンプする機能とか、Aの方でAllowされた
アクセスに環境変数を付けて、Aの方でSetEnvIfとかで
明示的にAllowするとかできないかと、半日ほど抜け道を探して
みたのですが、そんな便利そうなの、なさそうでしょうか?

#----------------------------------------------
# A 認証できたら通したい方
<Files *>
AuthUserFile /home/userdir/private/.htpasswd
AuthGroupFile /dev/null
AuthName "UserName:TS,Password:NET"
AuthType Basic

Satisfy any
require valid-user

Order Allow,Deny
Allow from all
deny from 255.255.255.255
</Files>

# B 何が何でも通せんぼしたい方
# <Files *>
# Satisfy all
# Order Deny,Allow
# deny from 192.168.0.1
# </Files>

<Files ~ "^\.ht">
Satisfy All
Order Deny,Allow
deny from all
</Files>
#----------------------------------------------

でび  http://homepage1.nifty.com/davi/