让我们考虑使用以下.htaccess保护文件夹www.mydomain.com/exemple:
的.htaccess
AuthUserFile /root/FTPname/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Restricted Access"
AuthType Basic
require valid-user
我想仅在用户有特定cookie时才允许访问exemple文件夹,或者我引发错误(使用以下[F]标志)。然后我实现了以下代码:
的.htaccess
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !CookieName=CookieValue
RewriteRule .* - [F,L]
AuthUserFile /root/FTPname/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Restricted Access"
AuthType Basic
require valid-user
问题是,当我加载没有cookie的exemple文件夹时,它首先进行验证过程...我想先提出错误。有人知道吗?
答案 0 :(得分:1)
使用新的环境变量尝试“满足任何”。这里显示了两种技术: .htaccess basic auth by virtual host?一个使用SetEnvIf,另一个使用RewriteRule来设置变量。由于SetEnvIf无法检测到cookie,因此您需要RewriteRule。但我发现在我的共享主机平台上,RewriteRule无法使用“满足任何”。如果它适合你,它将看起来像:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !CookieName=CookieValue
RewriteRule .* - [L,E=DENY:1]
AuthUserFile /root/FTPname/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Restricted Access"
AuthType Basic
Order Deny,Allow
Satisfy any
Deny from all
Require valid-user
Allow from env=!DENY
另请参阅:htaccess exclude one url from Basic Auth
注意您保护的页面不包含图片,样式表等,当页面本身没有时会触发身份验证请求。