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