NextJS访问根/的时候,默认访问的是哪个路径,并指定一个其他页面作为默认首页

半兽人 发表于: 2025-06-19   最后更新时间: 2025-06-19 12:08:43  
{{totalSubscript}} 订阅, 73 游览

默认访问路径

Next.js 从 v9 起就原生支持把 pages/app/components/ 等目录放在 src/ 下,为了更清晰地分离“源代码”和其他项目文件(如配置文件、README 等)。

默认路径:

目录结构 是否默认支持 默认路由行为
pages/index.js / 路由
src/pages/index.js / 路由
app/page.tsx 是 (App Router) / 路由
src/app/page.tsx 是 (App Router) / 路由

指定一个其他页面作为默认首页

指定访问 / 时展示其他页面内容的方式:

方式 1:在 src/pages/index.js 中重定向

例如你想默认跳转到 /home

// src/pages/index.js
import { useEffect } from 'react'
import { useRouter } from 'next/router'

export default function Index() {
  const router = useRouter()

  useEffect(() => {
    router.replace('/home') // 无历史记录跳转
  }, [])

  return null // 或 loading 占位符
}

如果你用的是 pages/ 目录,这是最推荐的方式。

方式 2:使用 Next.js 的 redirects 配置(服务端 301/302 重定向)

next.config.js 中添加:

// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/',
        destination: '/home', // 你想跳转的默认页面
        permanent: false, // true 为 301,false 为 302
      },
    ]
  },
}

然后重启服务。

  • 适合静态导出、服务端渲染;
  • 更适合 SEO 场景(比 JS 重定向好);
  • 缺点是用户会看到 /home 这个路径。

方式 3:直接把你想做首页的内容写在 index.js

如果只是内容复用,比如你有一个 HomePage 页面组件,想用它作为首页,可以直接 import:

// src/pages/index.js
import HomePage from './home'

export default function Index() {
  return <HomePage />
}

无法通过配置改变 / 所映射的文件路径

Next.js 不支持通过配置文件更改“访问 / 加载哪个文件”,它始终会找 pages/index.js(或 app/page.tsx)作为 / 的实际入口。这是框架默认约定,不能直接更改。


对比:

方式 特点 是否推荐
router.replace('/home') 客户端跳转,快速灵活 ✅ 推荐
next.config.js → redirects 服务端重定向,适合 SEO ✅ 推荐
直接 import 页面内容 简单复用,不跳路径 ✅ 推荐
修改默认 / 映射路径 ❌ 不支持
更新于 2025-06-19
在线,6小时前登录

查看Next.js更多相关的文章或提一个关于Next.js的问题,也可以与我们一起分享文章