2013-03-17 55 views
0

嗨,所以我需要重写此:麻烦nginx的重写

www.site.com/foo.php?var1=value1&var2=value2 

这样:

www.site.com/value2 

我尝试这样做:

location /value2 { 
    rewrite ^/value2/?$ /foo.php?var1=value1&var2=value2; 
} 

而这个变种似乎工作,但重点是变量没有通过...

和这个:

location /foo.php { 
if ($arg_var2 ~ "value2") { 
     rewrite^http://site.com/$arg_var2? permanent; 
    } 
} 

但它没有工作...任何想法?在此先感谢

+1

这个问题并不清楚。它说重写为“/ const2”。但你试图从“/ const2”重写?另外你的失败测试的实际输出是什么? – 2013-03-18 03:58:22

+0

重点是变量不通过。 – 2013-03-18 09:10:17

+0

是www.site.com/foo.php?var1=const1&var2=const2中的const2,与www.site.com/const2中的一样?如果它是一个常量,为什么你把它变成一个变量? – Pixou 2013-03-18 11:56:57

回答

0

如果值1和值2是不变的,你可以使用:

if ($args ~ "var1=value1&var2=value2") { 
      set $args/; 
      rewrite ^.*$ /const2 permanent; 
    } 

另一种解决方案是一些更灵活,其建议立即进行删除与其他值正常工作,但我没做工作,正则表达式(这一个不工作,但它不应该太远):

location/{ 
    rewrite ^/foo.php.*var2=.*$ /$2 redirect; 
} 
+0

好的,但是我应该在什么地方使用第一个解决方案? – 2013-04-18 08:39:02