RewriteCond 用于 .htaccess 文件中的查询参数
RewriteCond for query parameters in .htaccess files
我必须写一些重写规则,我需要根据我的查询参数进行检查。
publicurl是这样的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,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
将您的规则更改为:
RewriteCond %{QUERY_STRING} ^(optparam=false)?$ [NC]
RewriteRule ^lmn/xyz\.json$ xyz.json [L,NC]
好吧,我认为需要对根本不存在的 optparam
进行额外检查。试过这个:
RewriteCond %{QUERY_STRING} (^$|!^optparam$|^optparam=false$) [NC]
RewriteRule ^lmn/xyz\.json$ xyz.json [L,NC]
这似乎对我有用。但是有什么办法可以进一步缩短这个条件呢?我相信我没有在这里充分发挥正则表达式的潜力。
我必须写一些重写规则,我需要根据我的查询参数进行检查。
publicurl是这样的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,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
将您的规则更改为:
RewriteCond %{QUERY_STRING} ^(optparam=false)?$ [NC]
RewriteRule ^lmn/xyz\.json$ xyz.json [L,NC]
好吧,我认为需要对根本不存在的 optparam
进行额外检查。试过这个:
RewriteCond %{QUERY_STRING} (^$|!^optparam$|^optparam=false$) [NC]
RewriteRule ^lmn/xyz\.json$ xyz.json [L,NC]
这似乎对我有用。但是有什么办法可以进一步缩短这个条件呢?我相信我没有在这里充分发挥正则表达式的潜力。