默认访问路径
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 页面内容 | 简单复用,不跳路径 | ✅ 推荐 |
修改默认 / 映射路径 |
❌ 不支持 | ❌ |