我有一个完全被 Basic Auth 锁定的网络服务器
<Location />
AuthType Basic
# [...] rest of basic auth stuff
require valid-user
order deny,allow
deny from all
Satisfy any
</Location>
一个子目录无需授权即可访问:
<Location /public>
allow from all
Satisfy any
</Location>
这工作正常。现在我想允许无需登录即可访问一些使用 mod_rewrite 访问的脚本:
RewriteRule ^phonebook/show/(.+)$ /quicksearchShow.php?uid=$1 [NC]
RewriteRule ^phonebook/(.+)$ /quicksearch.php?s=$1 [NC]
RewriteRule ^phonebook$ /quicksearch.php [NC]
我尝试过的一些方法:
<Location ~ "/phonebook*">
Allow from all
Satisfy Any
</Location>
<Location /phonebook>
Allow from all
Satisfy Any
</Location>
<LocationMatch "^phonebook.*">
Allow from all
Satisfy Any
</LocationMatch>
这些选项都不起作用。我猜是因为/phonebook
不是服务器上的实际目录。所以我尝试了一些<Files>
指令的变体:
<FilesMatch "/quicksearch.*">
Allow from all
Satisfy Any
</FilesMatch>
<FilesMatch "^quicksearch.*">
Allow from all
Satisfy Any
</FilesMatch>
<Files "quicksearch.php">
Allow from all
Satisfy Any
</Files>
但也没有运气。
那么,如何为通过 mod_rewrite 映射的特定“虚拟”目录设置选项?
答案1
所以,我有点放弃了这种方法。我创建了一个子目录“电话簿”,将文件移到那里,并将其添加到 apache 配置中:
<LocationMatch "^/(css|js|images|icons|phonebook)/">
Order Deny,Allow
Allow from All
Satisfy Any
</LocationMatch>
这是可行的,但如果文件系统上没有该目录,我就无法让它工作。