1

让我们考虑使用以下 .htaccess 保护的文件夹 www.mydomain.com/exemple:

.htaccess

AuthUserFile /root/FTPname/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Restricted Access"
AuthType Basic
require valid-user

我只想在用户具有特定 cookie 或引发错误(使用以下 [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的示例文件夹时,它首先通过身份验证过程......我想先提出错误。有谁知道?

4

1 回答 1

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 从基本身份验证中排除一个 url

请注意,您要保护的页面不包含图像、样式表等,它们会在页面本身没有触发身份验证请求时触发。

于 2013-02-17T15:08:50.987 回答