使用“主文件”和mod_rewrite时,限制apache中的访问,但一个URL除外

使用“主文件”和mod_rewrite时,限制apache中的访问,但一个URL除外

我已成功将基本身份验证应用于整个网站,但现在我想针对特定 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 是关于站点时才会设置。

参考:https://stackoverflow.com/questions/8731109/getting-authentication-required-when-requesting-instead-of-index-php?rq=1

相关内容