如何否定“允许来自env'在Apaches htaccess?

时间:2014-07-04 08:18:13

标签: apache .htaccess authentication

我想使用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指令的允许?

非常感谢!

1 个答案:

答案 0 :(得分:0)

  1. require_auth中为限制域
  2. 设置SetEnvIfNoCase变量
  3. 如果主机不是require_auth
  4. ,请重置restricted-domain变量
  5. 最后翻转允许,拒绝
  6. 试试这段代码:

    # 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