【问题标题】:Not able to go back after redirected by res.writeHead 301 nextjs被 res.writeHead 301 nextjs 重定向后无法返回
【发布时间】:2021-07-16 11:59:35
【问题描述】:

我在 react 中处理服务器端重定向。

在 getInitalProps 中我做了类似的事情

const { res } = ctx

if(some condtion === true){
    redirection
    res.writeHead(301, {
      Location: 'new/url/destination/here'
    });
    res.end();
}

它有效,但问题是即使条件为假,我也无法再次访问此页面。

我删除了整个区块,但仍然无法访问此页面。尝试重新启动服务器但没有用。需要帮助

我按照这个解决方案,但使用 301 而不是 302 Conditional redirection in Next.js

提前致谢。

【问题讨论】:

  • 您需要一个相等 (==) 或标识 (===) 运算符进行比较。或者,由于它是一个布尔值,您可以省略比较。 if (some_condition === true) 或只是 if (some_condition)
  • @Nick 是的,它是一个比较运算符。更新了我的问题请检查
  • @VijayThomas 你试过用getServerSideProps 代替吗?它对我有用:codesandbox.io/s/agitated-tdd-22qu2——在这个例子中只有/contact被重定向到/about,除了base之外的所有其他路由都导致404。另外,如果你的条件只是一些模式匹配,那么你可以做:nextjs.org/docs/api-reference/next.config.js/redirects
  • @brc-dd 现在我已经删除了与 url 相关的完整代码,但我仍然无法访问该页面。

标签: javascript node.js reactjs next.js


【解决方案1】:

如果站点被永久移动到给定地址,则使用状态代码 301。 这意味着您的应用程序可能会缓存满足条件时收到的 URL。

在随后的请求中,它只使用该缓存地址,而无需再次检查您的情况。我不知道为什么您从链接的示例中更改了该状态代码,但是将其切换回 302(已暂时)应该可以在清空下一个服务器的缓存后解决您的问题。

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2012-06-19
    • 1970-01-01
    • 2012-03-14
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多