Nginx重写URL的最后一个片段

时间:2018-06-19 12:25:55

标签: nginx nginx-location

我想将Nginx中的URL'https://www.example.com/knowledges/qa/123456'转换为'https://www.example.com/knowledges/qa.html?id=123456'。

我是Nginx的新手,可以尝试以下方法:

root   /opt/statics;

location / {            
   index index.html;
}

location /knowledges/qa/ {
   rewrite ([^\/]+)\/?$ /knowledges/qa.html?questionId=$1 last;
}

正则表达式/([^\/]+)\/?$/g可以匹配url的最后一个片段的组(即123456)。

==编辑==

添加最后一个斜杠/knowledges/qa/的效果。 (否则为死循环)

然后,出现新问题。在qa.html中检索文档位置:

document.location.href // https://www.example.com/knowledges/qa/123456

不是https://www.example.com/knowledges/qa.html?id=123456符合预期吗?

1 个答案:

答案 0 :(得分:0)

我相信[^/]+会匹配knowledges而不是123456。试试

rewrite ^/knowledges/qa/(\d+)$ /knowledges/qa.html?questionId=$1 last;