Apache 的 Nginx 重写规则

Apache 的 Nginx 重写规则

我必须为 apache 和 nginx 创建重写规则。

所需更改:

/search?q=test&**p**=1 to /search?q=test&**page**=1

对于 Apache,下面的代码运行良好,但我无法将其转换为 nginx。

RewriteCond %{QUERY_STRING} ^q=(.*)&p=([0-9]+)(.*)$
RewriteRule ^(search/?)$ /search?q=%1&page=%2 [NC,L,R]

我尝试过这样的事情:

  if ($query_string ~ "^q=(.*)&p=([0-9]+)(.*)$"){
    rewrite ^/(search/?)$ /search?q=%1&page=%2 redirect;
  }

但它的结尾是这样的:

/search?q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q=%1&page=%2&q

我究竟做错了什么?

答案1

关于模块重写的 Nginx 文档有一些例子。本质上你使用了错误的字符来识别正则表达式结果。应该是$而不是%

您可能还需要重复正则表达式以匹配重写规则。

相关内容