2016-09-02 12 views
10

URLは一部の定義されたユーザーのみがアクセスできる必要があります。 URLにはクエリパラメータがあり、それが識別器です。クエリパラメータを持つURLへのアクセスを制限する

URLは次のようなものが考えられます。

https://my.my.com/my-app/view/myView.xhtml?myQueryParam=allUsers 

なapacheの設定で私の経験は〜0であり、私はこれを設定することができ、少しグーグル: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> 

?も追加の文字列になる可能性があります。したがって、.*です。

これは機能しますが、問題はexへのアクセスも拒否することです。リンクそれはクエリパラメータの値を気にしないようだ

https://my.my.com/my-app/view/myView.xhtml?myQueryParam=somethingElse 

...

に私は何を欠場か?

編集:私はApache 2.2を使用していると言いました。

+0

あなたはhttp://stackoverflow.com/questions/14648078/apache-permissions-based-on-querystring#を見ましたか? – Phillip

+0

'myQueryParam = somethingElse'には何をしますか? – revo

+0

書き換えはいつも私にとって謎だった。 '。*'は 'myQueryParam = allUsers'まであなたを連れて行きますか? – sln

答えて

3

提供ソリューションLocation*ディレクティブ内IfディレクティブではApache V2.4

チェックENV変数値のためである:基本的にそのxhtml後にApacheマッチ何かを伝える、これを試してみてください

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> 
+0

残念ながら、私はApache 2.2を使用しています。とにかくありがとうございました。 – Francesco

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> 
+0

ありがとうございますが、 'myQueryParam = something else'でもアクセスを拒否します。 – Francesco

関連する問題