我必须为 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 文档有一些例子。本质上你使用了错误的字符来识别正则表达式结果。应该是$
而不是%
。
您可能还需要重复正则表达式以匹配重写规则。