Ограничить доступ к URL-адресу с параметрами запроса
Мне нужно, чтобы URL-адрес был доступен только для определенных пользователей. В 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
Кажется, что это не беспокоит значение параметра запроса...
Что мне не хватает?
EDIT: Я забыл сказать, что я использую Apache 2.2.
Ответы
Ответ 1
Предоставленное решение для Apache v2.4
Проверить значение переменной env директивой If
в директиве Location*
:
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>
Ответ 2
попробуйте это, в основном говоря, что 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>