当使用查询字符串访问url时,我想重写为无查询字符串url,如:
/blog/(\d+)/(w+)?a=1$b=2....
重写
/blog/(\d+)/(w+)
答案 0 :(得分:1)
如果您想要将所有请求重写为查询字符串,只需将它们添加到您的服务器块即可。
if ($query_string != "") {
rewrite ^(.*)$ $uri? last;
}
<强>解释强>
rewrite指令的语法是
rewrite regex replacement [flag];
首先,if
语句将匹配具有查询字符串的所有请求,并使用替换$uri?
重写它们
根据documentation,查询字符串被删除,因为
如果 replacement 字符串包含新的请求参数,则先前的请求参数将附加在它们之后。如果这是不受欢迎的,在替换字符串的末尾添加问号可以避免附加它们。
最后,last
标志告诉nginx
停止处理当前的ngx_http_rewrite_module指令集并开始搜索与更改的URI匹配的新位置;