我的虚拟主机中有这个:
<LocationMatch "/pressonly">
AuthType Basic
AuthName "Press Only"
AuthUserFile /home/pur/.htpasswd
Require valid-user
</LocationMatch>
它显示登录正常,但如果我按取消,我仍然会看到该页面,我遗漏了什么/做错了什么?
更新:
我认为,经过进一步研究,我发现我的 Location / LocationMatch 必须在执行任何重写后进行。因此我的 vhost 应该是:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
<Location /pressonly>
AuthType Basic
AuthName "Press Only"
AuthUserFile /home/pur/.htpasswd
Require valid-user
</Location>
而且我不应该有 .htaccess 文件。但是,使用上述方法不会执行任何重写。
答案1
添加 order 拒绝、允许语句以及全部拒绝。您还需要一个满足指令。我怀疑您的默认允许在您取消身份验证后生效。
<Location /pressonly>
AuthType Basic
AuthName "Press Only"
AuthUserFile /home/pur/.htpasswd
Require valid-user
order allow,deny
deny from all
Satisfy any
</Location>
更新:允许和拒绝之间不应该有空格。