Limiter l’access à une URL avec des parameters de requête

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