我需要只为某些已定义的用户访问URL。在URL中有一个查询参数,它是鉴别器。
网址可能是这样的:
https://my.my.com/my-app/view/myView.xhtml?myQueryParam=allUsers
我在这种apache配置中的经验是〜0并且谷歌搜索了一点我可以设置这个:
RewriteEngine on
RewriteCond %{QUERY_STRING} myQueryParam=allUsers
RewriteRule "/my-app/view/myView[.]xhtml.*" - [E=no_auth_required:1]
<LocationMatch "/my-app/view/myView[.]xhtml.*">
Require uniqueID user1ID user2ID
</LocationMatch>
在xhtml
和?
之间也会出现其他字符串,因此.*
。
这有效,但问题是它也拒绝访问ex。到链接
https://my.my.com/my-app/view/myView.xhtml?myQueryParam=somethingElse
它似乎并没有打扰查询参数的值...
我想念什么?
编辑:我忘了说我使用的是Apache 2.2。答案 0 :(得分:3)
提供的解决方案适用于Apache v2.4
通过If
指令中的Location*
指令检查env变量值:
RewriteCond %{QUERY_STRING} myQueryParam=allUsers
RewriteRule . - [E=no_auth_required:1]
<Location "/my-app/view/myView.xhtml">
<If "reqenv('no_auth_required') == 1">
Require uniqueID user1ID user2ID
</If>
</Location>
答案 1 :(得分:0)
试试这个,基本上告诉apache匹配xhtml
后不是问号的任何东西。
RewriteEngine on
RewriteCond %{QUERY_STRING} myQueryParam=allUsers
RewriteRule "/my-app/view/myView[.]xhtml[^?]*" - [E=no_auth_required:1]
<LocationMatch "/my-app/view/myView[.]xhtml[^?]*">
Require uniqueID user1ID user2ID
</LocationMatch>