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
相关产品推荐
相关产品推荐

