You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中getServerSideProps如何修改重定向状态码为301?

解决Next.js getServerSideProps重定向状态码显示200的问题

第一步:确保getServerSideProps的重定向配置正确

检查你的动态路由页面(比如pages/[slug].js)中的getServerSideProps代码,必须明确指定301状态码,示例代码如下:

export async function getServerSideProps(context) {
  const { slug } = context.params;
  // 检测slug是否包含大写字母
  if (/[A-Z]/.test(slug)) {
    const lowerSlug = slug.toLowerCase();
    return {
      redirect: {
        destination: `/${lowerSlug}`,
        permanent: true, // permanent设为true对应301,false对应302
        statusCode: 301 // 显式指定状态码,避免环境默认值覆盖
      }
    };
  }

  // 正常业务逻辑
  return {
    props: { /* 页面所需数据 */ }
  };
}

注:permanent: true本身已对应301,但显式声明statusCode: 301可以消除部分场景下的歧义。

第二步:调整Postman的重定向跟随设置

Postman默认会自动跟随重定向请求,你看到的200是目标小写URL的响应状态码,而非初始请求的301。要查看真实状态码:

  • 点击请求右上角的齿轮图标打开请求设置
  • 取消「Follow redirects」选项的勾选
  • 重新发送GET请求,即可看到301状态码

额外验证方式:用curl测试

如果对Postman的结果仍有疑问,可通过curl命令查看完整重定向链:

curl -v http://your-domain.com/YourSlugWithUppercase

输出中会明确显示301 Moved Permanently的响应头。

内容的提问来源于stack exchange,提问作者bami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:32:34