我已成功将基本身份验证应用于整个网站,但现在我想针对特定 URL 模式设置例外。据我了解,我可以使用该指令,但到目前为止,它不起作用。
也许使事情复杂化的是,我的网站的每个页面实际上都是 /master.php,而页面之间唯一的不同就是查询字符串,它指示 master.php 注入页面特定的内容。这给了我一个非常简单的皮肤解决方案。结合 mod_rewrite,我拥有友好的 URL,如下所示:
mysite.com/stats
mysite.com/about
重写为:
mysite.com/master.php?p=stats
mysite.com/master.php?p=about
在此设置中,是否可以要求对除 /about 之外的整个网站进行身份验证?请注意,/about 后面可能有一个查询字符串,这就是为什么我需要对 URL 进行例外处理图案,而不仅仅是一个特定的 URL。
如果有什么不同的话,以下是一些具体情况:
- Ubuntu 15.04
- Apache 2.4.10
- 我的重写在 site.conf 文件中,而不是在 .htaccess 文件中。
答案1
使用mod_setenvif
:
SetEnvIf Request_URI "^/about$" allow=yes
AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/webinterface/.htpasswd
Options +FollowSymLinks
Order Deny,Allow
Satisfy any
Deny from All
Require valid-user
Allow from env=allow
→ 底部会阻止整个内容,除非您已登录或allow=yes
,仅当请求 uri 是关于站点时才会设置。