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

NextJS 14(Vercel部署)如何修改默认404错误页面路由

解决Next.js Pages路由自定义404错误页面路径问题

步骤1:创建自定义404错误页面

在项目的pages/errors目录下新建404.js文件(若errors目录不存在则先创建),编写自定义错误页面内容:

function Custom404() {
  return (
    <div>
      <h1>404 - 页面不存在</h1>
      <p>你访问的页面无法找到,请检查网址是否正确。</p>
    </div>
  )
}

export default Custom404

步骤2:全局错误处理重定向

在pages目录下新建或修改_error.js文件,通过状态码判断重定向到自定义404页面:

function Error({ statusCode }) {
  if (statusCode === 404) {
    // 客户端环境直接跳转
    if (typeof window !== 'undefined') {
      window.location.href = '/errors/404'
    }
    return <></>
  }
  return (
    <div>
      <h1>发生错误</h1>
      <p>状态码: {statusCode}</p>
    </div>
  )
}

Error.getInitialProps = ({ res, err }) => {
  const statusCode = res ? res.statusCode : err ? err.statusCode : 404
  return { statusCode }
}

export default Error

步骤3:确保用户路由优先级

在pages/[username]/index.js中,通过getServerSideProps校验用户存在性,避免错误拦截合法的"404"用户页面:

export async function getServerSideProps(context) {
  const { username } = context.params
  // 替换为实际获取用户数据的逻辑
  const userData = await fetchUserByUsername(username)
  
  if (!userData) {
    // 用户不存在时触发404错误
    return {
      notFound: true,
    }
  }

  return {
    props: { userData },
  }
}

function UserPage({ userData }) {
  return (
    <div>
      <h1>用户 {userData.username} 的主页</h1>
      {/* 用户页面内容 */}
    </div>
  )
}

export default UserPage

步骤4:Vercel路由规则配置(可选)

若部署后路由匹配异常,在项目根目录创建vercel.json添加重写规则:

{
  "routes": [
    { "src": "/404", "dest": "/[username]" },
    { "src": "/errors/404", "dest": "/errors/404" },
    { "src": "/(.*)", "dest": "/$1" }
  ]
}

完成以上配置后:

  • 访问.com/404会匹配用户路由,展示已注册的"404"用户页面
  • 不存在的路由会触发404错误,重定向到.com/errors/404展示自定义错误页

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:45:57