如何使用 nginx 重写与 try_files 让反应路由器工作



我正在使用 nginx 和 react 的 try_files 指令来强制所有路径转到/index.html并由 react 路由器处理,这样路径就不需要以/#/开头。

这适用于:

location / {
    try_files $uri /index.html;
}

因此,像 /invitation 这样的 url 将转到正确的位置。

但是,仍然有一些来源正在生成/#/ url,我希望将它们重写为没有/#/的等效 url(因此/#/invitation会转到 /invitation )。

我已经尝试了我能想到的所有变体,包括更改顺序、转义特殊字符以及有和没有永久重定向,但没有任何效果:

location / {
    rewrite ^/#/(.*) $1 permanent;
    try_files $uri /index.html;
}

正确的方法是什么?

Richard Smith 的评论是正确的 - 锚点部分永远不会发送到服务器。更多信息,请访问:URL 的锚点部分是否发送到 Web 服务器?

最新更新