0

我在微调 Nginx url 重写规则的正则表达式时遇到了麻烦,我想做的是获取 url 的前两部分并将它们转换为变量(没什么花哨的,应该很简单)。

例如,我输入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/,我目前在 var 1 中得到了 piece1,这很好。但是,如果用户键入http://www.webserver.com/piece1,它会给我一个错误,我想得到相同的结果(var 1=piece1)。

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

4

1 回答 1

0

似乎 / 也被“。”识别...尝试:

location / {
  rewrite ^/([^/]+)/([^/]+)/? /rewtest.php?val1=$1&val2=$2 last;
  return   404;}
} 
于 2013-10-09T12:50:34.363 回答