2017-12-27 776 views
1

我正在为一个网站提供nginx作为apache的代理。 我有重写模块的问题。nginx用URL重写部分url? mark

http://example.com/foo/bar/url?someparam=1&otherparam=2

我需要从

/富/酒吧/ URL?someparam = 1 & otherparam = 2

/富/酒吧/ URL2重写?someparam = 1 & otherparam = 2

我发现它有问题,因为它不是/foo/bar/url/someparam,但它只是文本的一部分,我需要在动态url中重写。

我正在尝试: rewrite ^(.*)url(.*)$ $1url2$2;但我得到了错误500。

我该怎么做?

回答

0

在您的rewrite语句中,新URI也与正则表达式模式匹配。这将导致以500响应结束的重定向循环。

您需要使正则表达式更加具体,以便新的URI不匹配。

另外,nginx在处理rewrite语句时使用规范化URI,该语句不包括?及其后的查询字符串。

rewrite ^(.*)url$ $1url1; 

rewrite指令将自动附加在原有的URI任何?和查询字符串:那么如下的语句可以简化。

查看this document了解更多。

这个URI