一个 url https://www.example.com/knowledges/qa/123456
希望通过 Nginx 代理到 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;
}
其中正则 ([^\/]+)\/?$
匹配到 url path 最后一部分,即 id。(见 https://regex101.com/r/CBuz0o/1/)
更新
在 /knowledges/qa
后面加了一个斜杠 /knowledges/qa/
,不加的话会 rewrite 死循环
现在能够正常访问了,但是在 qa.html 中拿到的 document.location
还是 Nginx 转发之前的 url,即 https://www.example.com/knowledges/qa/123456
。怎么才能拿到 Nginx 转发后的 url https://www.example.com/knowledges/qa.html?id=123456
?