在虚拟子目录中禁用 Apache 基本身份验证

在虚拟子目录中禁用 Apache 基本身份验证

我有一个完全被 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>

这是可行的,但如果文件系统上没有该目录,我就无法让它工作。

相关内容