Nginx 位置块不适用于链接

Nginx location block not working for links

我有以下内容:

location /ron-swanson-quotes/ {
  return 301 /ron-swanson/;
}      

还有一个 SSR React next.js 应用程序。

此处的重写适用于外部访问该站点的人,但如果我单击内部站点 link,则无效。 nginx 是否能够监听节点中发生的事情,或者 nginx 永远不知道它们?

编辑:当它在外部 linked 时,它重定向很好。当从应用程序中单击它时,Nginx 日志如下:

[2018-03-05T19:06:13+00:00] #######.xyz 71.211.##.## "GET /communicator/paulo-coelho/ HTTP/1.1" 304 "http://####.xyz/x-paulo-coelho-quotes-that-will-soothe-your-aching-heart/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" 1.180

谢谢!

你的front-end开发版也是SSR吗?您可能只需要将 link 从相对路径更新为绝对路径,并确保不使用 React-Router Link 组件。 React 路由器可能正在处理相对路径,因为它将它视为 front-end 路由,所以使用绝对路径而不是 link 组件通过 Nginx 发送请求。

例子

而不是这个:

<Link to='/ron-swanson-quotes'>Ron Swanson</Link>

这样做:

<a href='https://yourronswansonwebsite.com/ron-swanson-quotes'>Ron Swanson</a>

干杯

所以,

我们使用的包是custom-express-server。我意识到,与其使用 nginx,更好的选择是有一个重定向数组,并在自定义快速设置中有一个重定向,在 getInitialProps 中有一个 front-end 的重定向。

当我们在 getInitialProps 中进行重定向时,页面转换中断,因此我们不得不在其中进行硬编码。