我想使用htaccess限制特定域的访问权限。起初我试图拒绝访问我的restricted-domain.com,然后我将实现“登录”。
# set the "require_auth" var if Host ends with "example2.com"
SetEnvIfNoCase Host restricted-domain\.com$ require_auth=true
# Auth stuff
AuthUserFile /html/typo3/.htpasswd
AuthName "Password Protected"
AuthType Basic
# Setup a deny/allow
Order Deny,Allow
Deny from all
# except if either of these are satisfied
Satisfy any
#require valid-user
#or 2. the "require_auth" var is NOT set
Allow from env=!require_auth
这两个域都以403结尾。所以我从所有人那里评论了Deny,并在我的PHP中检查了变量require_auth是否已设置。这是正确的,它在公共域中为NULL,在受限制时为true。所以我在没有否定的情况下尝试了它:
Allow from env=require_auth
除了表现相反之外,它的效果很好。我无法改变逻辑,因为有许多公共领域,它们将来会有所不同。那么我如何否定来自env指令的允许?
非常感谢!
答案 0 :(得分:0)
require_auth
中为限制域SetEnvIfNoCase
变量
require_auth
restricted-domain
变量
试试这段代码:
# set the "require_auth" var if Host ends with "example2.com"
SetEnvIfNoCase Host restricted-domain\.com$ require_auth
SetEnvIfNoCase Host (?!restricted-domain\.com).* !require_auth
# Auth stuff
AuthUserFile /html/typo3/.htpasswd
AuthName "Password Protected"
AuthType Basic
Require valid-user
Satisfy any
Order Allow,Deny
Allow from all
Deny from env=require_auth