LocationMatch 身份验证,始终允许

LocationMatch 身份验证,始终允许

我的虚拟主机中有这个:

<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>

更新:允许和拒绝之间不应该有空格。

相关内容