2017-07-27 17 views
1

書き換えルールを記述する必要があり、クエリパラメータに基づいてチェックを行う必要があります。.htaccessファイルのクエリパラメータのRewriteCond

公開URLはabc.com/lmn/xyz.jsonのようなもので、オプションのパラメータoptparamがあります。

これは私が達成したいものです。

optparamが存在し、not equal to falseある場合は、条件が失敗し、他のルールを続けていく必要があります。

いくつかのブログや記事を読んだ後、私はこれらのルールについて非常にかすかな考えを持っています。これを試してみました:

RewriteCond %{QUERY_STRING} !^optparam $ [NC,OR] 
RewriteCond %{QUERY_STRING} ^optparam=false$ [NC] 
RewriteRule ^lmn/xyz.json$ xyz.json 

しかし、私がtrueになるようにparam値を送信しても、RewriteRuleが適用されます。

ここで私が紛失していることを教えてください。

ありがとうございます!

例:

abc.com/lmn/xyz.json ==> Rule should fire 
abc.com/lmn/xyz.json?optparam ==> Rule should not fire 
abc.com/lmn/xyz.json?optparam=false ==> Rule should fire 
abc.com/lmn/xyz.json?optPARAM=hfjsgzjrg ==> Rule should not fire 
abc.com/lmn/xyz.json?optParam=FALSE ==> Rule should fire 

答えて

1
これにあなたのルールを変更し

RewriteCond %{QUERY_STRING} ^(optparam=false)?$ [NC] 
RewriteRule ^lmn/xyz\.json$ xyz.json [L,NC] 
+0

「optparam」がまったくない場合はどうなりますか? – Anusha

+0

'?!false $'は、valueがtrueのときにルールを起動しませんか?それはちょうど '偽$'であるべきですか?また、これをパラメータなしでどのように組み合わせますか? – Anusha

+0

が例を追加しました。私の編集を確認してください – Anusha

0

まあ、私は全く存在しないoptparamの追加のチェックが必要になると思います。試しました:

RewriteCond %{QUERY_STRING} (^$|!^optparam$|^optparam=false$) [NC] 
RewriteRule ^lmn/xyz\.json$ xyz.json [L,NC] 

これは私にとってはうまくいくようです。しかし、この状態をさらに短縮する方法はありますか?私はここでその完全な可能性に正規表現を使用していないと信じています。

関連する問題