作者: davi
日時: 2007/2/20(18:03)
みなさん  <  こん??は でび です

ここ数日、共有サーバでの.htaccessの設定をいじっています。

Apacheのバージョンは1.3.27のようです。

Satisfy ディレクティブに挑戦しているのですが、その場合、
上書きがどのように挙動するのか、Apacheのマニュアルから
では理解できずずに弱っています。どなたか、ご教示を。


もともとやりたいことは、次のような挙動です。

1 特定のIP範囲Aはパスワード規制し、認証を済ませば読ませる
2 特定のIP範囲Bは問答無用でキック
3 その他は通す

以下のものが現状なのですが、これは、2には至らず、1と3を
両立しようとしている段階です。

これで1と3を満たす感じで一応動いてはいるのですが、
<Files ~ "\.(html?|gif|jpe?g|png|txt|pl|exe|zip|lzh|pdf)$">
を<Files *>とすると、下で<Files ~ "^\.ht">としているにも関わらず、
.htaccessが読めてしまいます。

<FilesMatch>を使ってもダメなようです。どうしてなのでしょう?

http://mm.apache.or.jp/pipermail/apache00-01/2000-February.txtの、
Subject: [apache 3975]、Subject: [apache 3978] では、うまく
動いているような報告があるようなのですけど。

 <Files *>を複数記述できるのならば、<Files ~ "^\.ht">の前に
もう一つ <Files *>を記述して2に該当する部分を実現できるだろうと
見ていますが、その理解であっていますか?

# -------------------------------------------------------------
IndexIgnore *

# シンボリックリンクを許可してからでないとRewriteが効かない。
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC]
RewriteRule ^(.*) http://www.hoge.jp/$1 [R=301,L]

ErrorDocument 401 http://www.google.com
ErrorDocument 403 http://www.google.com
ErrorDocument 404 http://www.google.com

# ★環境設定★
SetEnvIf Host "foo\.net" [NC] Ryus
SetEnvIf Remote_Addr "192.168.0.1" Ryus

<Files ~ "\.(html?|gif|jpe?g|png|txt|pl|exe|zip|lzh|pdf)$">
#<Files *>だと.htaccessが読めてしまう

AuthUserFile /home/userdir/private/.htpasswd
AuthGroupFile /dev/null
AuthName "UserName:TS,Password:NET"
AuthType Basic

Satisfy Any
require valid-user

Order Deny,Allow
deny from env=Ryus
deny from 58.2.0.0/16

allow from env=NRyus
</Files>

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

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