匹配特定规则的 NGINX URL 重定向

匹配特定规则的 NGINX URL 重定向

我对 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;
}

地点改写用一个规范化不包含查询字符串的 URI。查询字符串中的参数可用作$arg_变量。

相关内容