2013-10-09 48 views
0

我无法微调Nginx的URL重写规则的正则表达式,我想要做的是拿走网址的前两部分,并将它们转换为变量(没有太花哨,应该简单)。Nginx的网址重写微调

例如我在http://www.webserver.com/piece1/piece2键入并获得http://www.webserver.com/rewtest.php??val1=piece1&val2=piece2

到目前为止,我有:

location/{ 
rewrite ^/(.*)/(.*)/? /rewtest.php?val1=$1&val2=$2 last; 
return 404;} 

} 

这似乎工作。问题是,如果用户键入http://www.webserver.com/piece1/piece2/它将val 1作为piece1/piece2(作为1变量,而不是2)。

另外,如果用户要键入http://www.webserver.com/piece1/我目前得到piece1在var 1,这是伟大的。但如果用户输入http://www.webserver.com/piece1它给了我一个错误,我想得到相同的(VAR 1 = piece1)。

任何帮助非常感谢,因为我是新的正则表达式!

+0

可能/需要以某种方式逃脱,例如作为\ /? –

回答

0

好像/也被认可的尝试“”:

location/{ 
    rewrite ^/([^/]+)/([^/]+)/? /rewtest.php?val1=$1&val2=$2 last; 
    return 404;} 
} 
+0

感谢您的帮助,但目前它只是给了我一个404 :( – user1427029

+0

也许使用[a-zA-Z0-9-]如果您的域名/网站包含0-9或“ - ” –

+0

它可以与更新正则表达式?只有当网址真的包含2个部分时才会起作用,否则你可能需要额外的重写规则? –