我有这种types的URL:
http://www.example.com/?param1=val1¶m2=¶m3=val3¶m4=val4¶m5=val5
我想把它redirect到这个:
http://www.example.com/newparam/val3/val4
所以我试过这个重写规则没有成功:
rewrite "/?param1=val1¶m2=¶m3=(.+)¶m4=(.+)¶m5=(.+)" http://www.example.com/newparam/$1/$2 redirect;
nginx不能处理查询参数吗?
编辑:我不想重写所有的请愿书。 我只需要重写那个URL,而不影响其他的。
好的,感谢rzab最初的帮助,我已经将他的规则重新定义为这个工作的解决scheme:
location / { if ($args ~* "/?param1=val1¶m2=¶m3=[0-9]+¶m4=.+¶m5=[0-9]+") { rewrite ^ http://www.example.com/newparam/$arg_param3/$arg_param4? last; } }
我只是添加了一个条件,以避免无限recursion,和? 在规则的最后摆脱了最初的参数 。 它完美的作品:)
location = / { 重写^ http://www.example.com/newparam/$arg_param3/$arg_param4; }