我有一个使用 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 映射的特定“虚拟”目录设置选项?
所以,我有点放弃了这种方法。我创建了一个子目录“电话簿”,将文件移到那里并将其添加到 apache 配置中:
这行得通,但是如果没有文件系统上存在的目录,我就无法让它工作。