我有一个“虚拟”URL www.abc.com/admin
,我想用一个简单的 htpasswd 来保护它。该目录在物理上不存在。页面的其余部分应该可供所有人访问。
我知道真实现有目录的解决方案,并找到了解决方案<FoldersMatch>
or<DirectoryMatch>
但不幸的是,这不适用于我的虚拟主机。只会<FilesMatch>
。
还有其他方法可以让它工作吗?
我有一个“虚拟”URL www.abc.com/admin
,我想用一个简单的 htpasswd 来保护它。该目录在物理上不存在。页面的其余部分应该可供所有人访问。
我知道真实现有目录的解决方案,并找到了解决方案<FoldersMatch>
or<DirectoryMatch>
但不幸的是,这不适用于我的虚拟主机。只会<FilesMatch>
。
还有其他方法可以让它工作吗?
您可以使用该Satisfy Any
语句来检查请求是否不是针对/admin
或是否存在有效用户:
# sets ENV if request is for /admin
SetEnvIf Request_URI ^/admin no_require_auth=true
# Auth stuff
AuthUserFile /var/www/htpasswd
AuthName "Password Protected"
AuthType Basic
# Setup a deny/allow
Order Deny,Allow
# Deny from everyone
Deny from all
# except if either of these are satisfied
Satisfy any
# 1. a valid authenticated user
Require valid-user
# or 2. the "no_require_auth" var is set
Allow from env=no_require_auth