# 页面不存在时：该用重定向还是 404？ | Creght AI 文档

> 当访客打开一个不存在的网址时，你有两种处理方式： 跳转（重定向）到另一个页面 ，或者 返回一个「页面不存在」提示页（404） 。这两者看起来都能“不让用户看到报错”，但它们的含义完全不同，用错了会伤害 SEO 和用户体验。…

[![Creght](https://ugc.talizen.com/_assets/site/2061660904709165056/1780797461299__creght_logo.png)帮助文档](/help)

[更新历史](/blogs)

[AI](/docs/ai/quick-create-first-website) [可视化](/docs/get-start)

开始使用

- [5 分钟快速创建第一个网站](/docs/ai/quick-create-first-website)
- [AI 创建网站指南](/docs/ai/ai-create-website-guide)
- [直接编辑：不消耗积分的内容修改](/docs/ai/ai-edit-content-guide)
- [使用 Pick，把其他模板的板块用到自己的网站](/docs/ai/pick-element-in-tpl)
- [Prompt 库](/docs/ai/prompt-lib)
- [AI 积分说明](/docs/ai/ai-credits-guide)
- [Creght Skill](/docs/ai/creght-skill)

后端

- [让网站支持登录、预约、密码页面等功能](/docs/ai/backend-database-guide)
- [OAuth 登录配置教程：Google 和 GitHub](/docs/ai/backend-auth-guide)

网站设置

- [多语言网站设置教程](/docs/ai/localization)
- [域名绑定教程](/docs/ai/custom-domain)
- [阿里云购买域名教程（新手版）](/docs/ai/aliyun-domain-registration-guide)
- [重定向设置教程](/docs/ai/redirects)
- [页面不存在时：该用重定向还是 404？](/docs/ai/redirect-or-404)
- [Facebook Pixel（Meta Pixel）接入教程](/docs/ai/facebook-meta-pixel)

高级用法

- [为不同域名配置不同默认语言](/docs/ai/domain-locale-routing)

网站设置/

# 页面不存在时：该用重定向还是 404？

当访客打开一个不存在的网址时，你有两种处理方式： **跳转（重定向）到另一个页面**，或者 **返回一个「页面不存在」提示页（404）**。这两者看起来都能“不让用户看到报错”，但它们的含义完全不同，用错了会伤害 SEO 和用户体验。

这篇教程帮你分清二者的区别，并给出在 Creght 里的正确做法。

## 一句话结论

- **具体的旧网址搬到了新网址** → 用 **重定向**。

- **网址本身就不该存在（打错、已删除、乱猜的链接）** → 返回 **404**，用一个友好的 404 页引导用户。

- **不要** 把所有不存在的网址统统重定向到首页 —— 这是搜索引擎明确不推荐的做法。


## 重定向和 404 到底差在哪

|  | 重定向（Redirect） | 404 页面 |
| --- | --- | --- |
| 地址栏 URL | **会变**（跳到新地址） | **不变**（停留在原地址） |
| HTTP 状态码 | 301 / 308（永久）、302 / 307（临时） | 404 |
| 含义 | “这个内容搬到别处了，去那边看” | “这个内容不存在” |
| 搜索引擎理解 | 把旧网址的权重转移到新网址 | 知道该网址无效，将其从索引中移除 |
| 适用场景 | 已知的、一对一的网址迁移 | 任何未知 / 已失效的网址 |

关键点： **重定向是“搬家通知”，404 是“查无此人”。** 一个不存在的乱猜网址并没有“搬到”任何地方，所以它不该被重定向，而应该老老实实告诉搜索引擎和用户“这里没有内容”。

## 三种常见场景，分别怎么做

### 场景一：给访客一个友好的“页面不存在”提示

访客打错网址、或点了一个已经删掉的链接。你希望页面不要太生硬，最好带上返回首页的入口、搜索框、或热门内容推荐。

**做法：做一个自定义 404 页。** URL 保持不变，状态码返回 404，页面内容由你自己设计。这是绝大多数情况下的正确选择。

### 场景二：某个旧网址已经搬到新网址

比如你把 `/old-blog/hello` 换成了 `/posts/hello`，老链接还在别处被引用、被收藏、被搜索引擎收录。

**做法：配置一条重定向规则**，用永久重定向（308）把旧网址指向新网址。这样访客和搜索引擎都会被平滑地带到新地址，旧网址积累的 SEO 权重也会转移过去。

### 场景三：想把所有未知网址都甩到首页

这看起来“很干净”，但 **强烈不推荐**。

- 对搜索引擎：Google 会把“内容不存在却返回 200 或跳转到首页”判定为 **软 404（Soft 404）**，反而拉低网站质量评分。Google 官方建议不存在的页面应当返回真实的 404。

- 对用户：访客以为自己点错了，却莫名其妙到了首页，很困惑，也找不到原本想要的内容。


**正确做法：** 返回 404，然后在 404 页面里放一个显眼的“返回首页”按钮。既符合搜索引擎规范，也照顾了用户体验。

## 在 Creght 里怎么做

### 1\. 自定义 404 页：新建 `page/404.tsx`

在页面目录下新建一个名为 `404` 的页面（ `page/404.tsx`）。之后，任何没有匹配到的网址都会自动渲染这个页面，并返回 404 状态码，地址栏保持访客输入的原网址。

```
// page/404.tsx
export default function NotFound() {
  return (
    <main style={{ textAlign: 'center', padding: '80px 20px' }}>
      <h1>404</h1>
      <p>抱歉，你访问的页面不存在。</p>
      <a href="/">返回首页</a>
    </main>
  )
}
```

同理，你也可以新建 `page/500.tsx` 来自定义“服务器出错”时的页面。

> 小贴士：404 页也可以像普通页面一样使用组件、样式和 `getServerSideProps`，比如展示推荐文章或站内搜索框。

### 2\. 配置重定向：在 `talizen.config.ts` 里写 `redirects`

对于“已知网址迁移”，在站点根目录的 `talizen.config.ts` 中配置重定向规则：

```
// talizen.config.ts
export default {
  redirects: [
    // 精确匹配：308 永久重定向
    { source: '/old-page', destination: '/new-page', permanent: true },
    // 通配符匹配：把 /blog 下的路径整体迁移到 /posts（307 临时）
    { source: '/blog/*', destination: '/posts/*', permanent: false },
  ],
}
```

- `permanent: true` 返回 **308（永久重定向）**，适合内容确实永久搬家、希望转移 SEO 权重的情况。

- `permanent: false` 返回 **307（临时重定向）**，适合临时性的跳转。

- `source` 支持精确匹配和结尾 `/*` 通配符（ `*` 命中的路径段会回填到 `destination` 的 `*`）。


重定向规则优先于页面匹配：命中规则的网址会直接跳转，不再进入页面渲染，因此不会触发 404。

## 决策速查

- 这个网址 **曾经有内容、现在搬走了**？→ **重定向**（ `talizen.config.ts` 的 `redirects`，永久用 308）。

- 这个网址 **从来就不该存在**？→ **404**（自定义 `page/404.tsx`，页内放返回首页入口）。

- 拿不准？→ 默认用 **404**。它是最安全、对 SEO 最友好的兜底方案。


本文目录

- [一句话结论](#一句话结论)
- [重定向和 404 到底差在哪](#重定向和-404-到底差在哪)
- [三种常见场景，分别怎么做](#三种常见场景-分别怎么做)
- [场景一：给访客一个友好的“页面不存在”提示](#场景一-给访客一个友好的-页面不存在-提示)
- [场景二：某个旧网址已经搬到新网址](#场景二-某个旧网址已经搬到新网址)
- [场景三：想把所有未知网址都甩到首页](#场景三-想把所有未知网址都甩到首页)
- [在 Creght 里怎么做](#在-creght-里怎么做)
- [1\. 自定义 404 页：新建 page/404.tsx](#1-自定义-404-页-新建-page-404-tsx)
- [2\. 配置重定向：在 talizen.config.ts 里写 redirects](#2-配置重定向-在-talizen-config-ts-里写-redirects)
- [决策速查](#决策速查)

![Creght](https://ugc.talizen.com/_assets/site/2061660904709165056/1780797461299__creght_logo.png)

此网站使用 [Creght](/) 创建

![用户交流群](https://ugc.talizen.com/_assets/site/2061660904709165056/1781070374701__help_qr.webp)

用户交流群

## 链接

- [价格](/price)
- [帮助中心](/help)
- [联系我们](/contact)
- [博客](/blogs)
- [退款说明](/tuikuan)

## 资源

- [全部资源](/resources)
- [模板](/templates)
- [组件库](https://creghtlib.site.creght.com)
- [动效库](/effects)
- [Figma to Creght](/figma2creght)
- [AI 编程指南](/api)

## 产品对比

- [对比上线了](/creght-vs-sxl)
- [对比凡科建站](/creght-vs-fkw)

## 协议

- [用户协议](/legal/terms)
- [隐私政策](/legal/privacy)
- [可接受使用政策](/legal/acceptable-use)

## 社交媒体

- [小红书](https://www.xiaohongshu.com/user/profile/5a38606811be10715f4895b6)
- [哔哩哔哩](https://space.bilibili.com/513308095)

[蜀ICP备2023038192号-2](https://beian.miit.gov.cn)
