nginx用url重写部分内容?标记

时间:2017-12-27 18:18:28

标签: nginx url-rewriting

我正在服务一个以nginx作为apache代理的网站。 我有重写模块的问题。

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

我需要从

重写

/ foo / bar / url ?someparam = 1& otherparam = 2

/富/酒吧/的 URL2 someparam = 1&安培; otherparam = 2

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

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

此外,nginx在处理rewrite语句时使用规范化的URI,不包括?及其后的查询字符串。所以你的陈述可以简化如下:

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

rewrite指令会自动在原始URI中追加任何?和查询字符串。

有关详情,请参阅this document

的URI