我对 nginx 并不陌生,但不幸的是,我一直不太了解重定向/重写规则。我陷入了困境,已经尝试了我所知道的方法,但没有成功。
我想要的是一个简单的 URL 重写/重定向,当我在浏览器栏中输入时: https://example.com/chart.php?id=1234 URL 自动转换为以下内容,当然显示与原始相同的内容: https://example.com/chart/1234
我已经尝试了很多方法,例如:
location /chart/{
rewrite ^chart/([0-9]+)/?$ chart.php?id=$1 break;
proxy_pass _to_apache;
}
提前谢谢了!
答案1
Nginx 中的所有 URI 都以 开头/
,但在正则表达式和替代品在你的rewrite
陈述中。
因此这个块:
location /chart/ {
rewrite ^/chart/([0-9]+)/?$ /chart.php?id=$1 break;
proxy_pass http://example.com;
}
将向/chart/123
上游传递http://example.com/chart.php?id=123
- 这与您所述的要求相反。
/chart.php?id=123
要向上游传递信息,http://example.com/chart/123
可以使用:
location = /chart.php {
rewrite ^ /chart/$arg_id? break;
proxy_pass http://example.com;
}