Apache的Satisfy详解
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/341)的形式标明文章原始出处和作者信息及本声明。最早接触Satisfy,是这样一个情况,一个目录启用了密码保护,想单独开放它的一个子目录,让这个子目录无须密码即可访问,那么需要这样设置:
<Directory "dir1">
AllowOverride All
AuthName "Fwolf's Vault"
AuthType Basic
AuthUserFile path/to/pwd/file
require valid-user
</Directory>
<Directory "dir1/dir2">
Allow from all
Satisfy any
</Directory>
这样用户访问dir2的时候就不需要输入密码了。额外说明一点,dir1和dir2都是针对文件地址的,而非url。但这样实现的原理我以前真没想过,直到我碰到了一个蹊跷的问题。
环境和上面的一样,只是我在dir2下面,想禁止对一个文件的访问,于是dir2的设置变为:
<Directory "dir1/dir2">
Allow from all
Satisfy any
<Files secret_file>
order allow,deny
deny from all
</Files>
</Directory>
(deny from all换成allow from someip,即绝对禁止换成只允许指定ip地址,对我后面的描述没有影响)
好了,现在访问那个应该被禁止访问的文件secret_file,由于我本身不在允许ip范围之内,所以应该是不能访问的,可是。。。怎么弹出对话框让输入用户名和密码了?如果用wget访问的话,可以清楚的看到:
401 Authorization Required
Authorization failed.
等等,401错误是密码输入错误,可我明明是绝对禁止访问的设置嘛,而且如果用浏览器访问,并且输入正确的密码居然还是可以访问呢,哪里的设置出了问题?虽然一样都是无法访问,可问题一定要搞清楚才行。
其实,仔细看看Satisfy的官方文档,答案就在其中,Satisfy就是在同时启用了Allow和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和Require的条件,而Any则是满足其中之一即可。
应用到我的问题上来,从上向下看,因为设置是从上级向下逐步解析的,最下层目录的配置具有最高的优先级,可以覆盖上级目录的设置,在.htaccess里也是一样。dir1中设置密码验证启用了Require;然后下级的dir2启用了Allow,并且用Satisfy any指定用户只要ip符合all或者输入正确密码就能访问,由于ip肯定会符合all这个条件,所以等同于取消了密码限制;最后的secret_file,把Allow进行了限制,注意,在这个时候,用户的ip不符合Allow,按照Satisfy any的定义,服务器自然会去查是否符合两个条件中的另外一个是否能够通过,所以就出现了密码输入框,而不是直接403 Forbidden。
现在问题清楚了吧,只要在secret_file的配置中增加一句:
Satisfy All
覆盖掉dir2中的Satisfy any设置,就可以实现预期的403拒绝访问了。
PS: 记得以前<Files (fileA|fileB)>是可以用的,现在不起作用了,要改成正则才行:<Files ~ (fileA|fileB)>。
Bookmark and Share This Page
If you like this then please subscribe to the RSS Feed.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BuddyMarks
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
kirtsy
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
July 22nd, 2007 at 9:22:00
还有就是如果用FireFox浏览这个Blog正常显示
如果用IE看,右边的栏目掉到 Leave a Reply下边去了,是IE的问题?
7月22日 9:22AM
[Reply]
July 22nd, 2007 at 13:14:23
以前内容中有长图片的时候会这样,现在又出现了?
css的问题,大概是代码块给顶出去了,建议使用firefox啦~
IE那个破东西不用也罢
[Reply]
July 25th, 2007 at 23:47:03
@Fwolf 回答你的问题哈:MT (gs)在过去的一段时间里速度不是很稳定。这就是我说的恶心的地方,相比而言,hostgator就很好。最差的应该是ixwebhosting。综合最近200天内的表现。
[Reply]
July 26th, 2007 at 1:52:52
@Caine 谢谢,MT的确在速度上并不突出,稳定性由于时间太短还不敢下结论
不过WP装上cache插件之后我感觉还是可以接受的
谢谢你提供的信息
[Reply]