nginx重写为无查询字符串url

时间:2016-05-19 03:55:58

标签: nginx url-rewriting

当使用查询字符串访问url时,我想重写为无查询字符串url,如:

/blog/(\d+)/(w+)?a=1$b=2....

重写

/blog/(\d+)/(w+)

1 个答案:

答案 0 :(得分:1)

如果您想要将所有请求重写为查询字符串,只需将它们添加到您的服务器块即可。

if ($query_string != "") {
    rewrite ^(.*)$ $uri? last;
} 

<强>解释

rewrite指令的语法是

rewrite regex replacement [flag];

首先,if语句将匹配具有查询字符串的所有请求,并使用替换$uri?重写它们

根据documentation,查询字符串被删除,因为

  

如果 replacement 字符串包含新的请求参数,则先前的请求参数将附加在它们之后。如果这是不受欢迎的,在替换字符串的末尾添加问号可以避免附加它们。

最后,last标志告诉nginx

  

停止处理当前的ngx_http_rewrite_module指令集并开始搜索与更改的URI匹配的新位置;