使用 Apache LocationMatch 捕获 URL 参数(“?=”或“&=”)

使用 Apache LocationMatch 捕获 URL 参数(“?=”或“&=”)

我想不出一个好的标题。基本上,我有覆盖 / 的整个网站的基本身份验证,但我希望将具有某些参数的 URL 排除在身份验证之外。

示例:如果有名为“zzz”的参数,则不进行身份验证

Protected
http://example.com/
http://example.com/?xxx=xxx&yyy=yyy

Not Protected
http://example.com/?zzz=zzz
http://example.com/?xxx=xxx&zzz=zzz

尝试做类似的事情

<LocationMatch "/zzz/">
  Allow from all
  Satisfy any
</LocationMatch>

现在可用。据我所知,LocationMatch 似乎看不到参数,这是正确的吗?还是我做错了?

答案1

LocationMatch绝对不能这样做。您可能能够使用参数从 mod_rewrite 中获得所需的行为QUERY_STRING,但我仍然将其归类为“做错事” - 您不想遇到这样的情况:您总是允许查询在未经授权的情况下通过?logout=true,但随后您添加的页面不会logout以相同的方式查找参数。

我建议将您的应用程序更改为使用虚假目录结构而不仅仅是查询参数,或者让您的应用程序本身处理所有的身份验证逻辑。

相关内容