J’ai besoin qu’une URL soit accessible uniquement à certains utilisateurs définis. Dans l’URL, il y a un paramètre de requête qui est le discriminateur.
L’URL pourrait être quelque chose comme ceci:
https://my.my.com/my-app/view/myView.xhtml?myQueryParam=allUsers
Mon expérience dans de telles configurations d’Apache est ~ 0 et googler un peu je pourrais configurer ceci:
RewriteEngine on RewriteCond %{QUERY_STRING} myQueryParam=allUsers RewriteRule "/my-app/view/myView[.]xhtml.*" - [E=no_auth_required:1] Require uniqueID user1ID user2ID
Entre xhtml
et ?
pourrait venir des chaînes supplémentaires aussi, par conséquent.
Cela fonctionne mais le problème est qu’il refuse également l’access pour ex. au lien
https://my.my.com/my-app/view/myView.xhtml?myQueryParam=somethingElse
Il semble que cela ne gêne pas la valeur du paramètre de requête …
Que me manque-t-il?
EDIT: J’ai oublié de dire que j’utilise Apache 2.2.
La solution fournie est pour Apache v2.4
Vérifiez la valeur de la variable env par une directive If
dans une directive Location*
:
RewriteCond %{QUERY_STRING} myQueryParam=allUsers RewriteRule . - [E=no_auth_required:1] Require uniqueID user1ID user2ID
Essayez ceci, en disant simplement à apache de faire correspondre n’importe quoi après xhtml
qui n’est pas un point d’interrogation.
RewriteEngine on RewriteCond %{QUERY_STRING} myQueryParam=allUsers RewriteRule "/my-app/view/myView[.]xhtml[^?]*" - [E=no_auth_required:1] Require uniqueID user1ID user2ID