Nginx重写规则无法正常/被忽略

时间:2013-12-24 20:37:35

标签: apache .htaccess nginx rewrite

我目前正在尝试重写此内容:

index.php?page=Example&paramX=1&paramY=2

index.php/Example/1/?paramY=2

但是,这不起作用:

rewrite ^index\.php/\?page=Example&paramX=([0-9]+)&paramY=([0-9]+)$ /index.php/Example/$arg_paramX/?paramY=$arg_paramY permanent;

在apache2中,我目前使用

RewriteCond %{QUERY_STRING} page=Example&paramX=([0-9]+)&paramY=([0-9]+)
RewriteRule ^index\.php$ /index.php/Example/%1/?paramY=%2 [R=permanent,L]

正在发挥作用。

1 个答案:

答案 0 :(得分:0)

您无法匹配nginx中的查询字符串参数,您必须尝试使用​​if之类的内容检查各个参数:

location /index.php {
   if ($arg_page = "Example") {
      rewrite ^ /index.php/Example/$arg_paramX/?paramY=$arg_paramY permanent;
   }
}

如果您确实需要验证paramXparamY[0-9]+,那么您需要对嵌套的IF语句进行某种破解,例如{{3} }。