超简易步骤总结

  1. 在网站根目录创建一个好看的 404 页面(比如 404.html)。
  2. 修改网站根目录下的 .htaccess 文件(Typecho 的核心配置文件)。
  3. 加一行代码告诉服务器遇到 404 错误时显示你的页面。
  4. 重启服务器让修改生效。
  5. 清理 Cloudflare 缓存(如果没生效的话)。

详细操作指南

第一步:创建自定义 404 页面

  1. 用 FTP 或服务器文件管理工具(如宝塔面板),进入你的 网站根目录(通常位置是 /var/www/html//home/www/你的域名/)。
  2. 新建一个文件,命名为 404.html,内容如下(可直接复制修改):
    <!DOCTYPE html>
    <html>
    <head>
        <title>页面不见啦!</title>
        <style>
            body { text-align: center; padding: 50px; }
            h1 { color: red; }
        </style>
    </head>
    <body>
        <h1>⚠️ 404 错误</h1>
        <p>你访问的页面不存在,<a href="/">点此返回首页</a></p>
    </body>
    </html>
    
    ✅ 完成后,确保通过浏览器能直接访问这个页面,比如:
    http://你的域名.com/404.html(应该能正常打开)。

第二步:修改 Typecho 的 .htaccess 文件

  1. 网站根目录 找到 .htaccess 文件(如果没看到,可能是隐藏文件,需开启显示隐藏文件选项)。
  2. 用文本编辑器打开它,找到类似以下代码的部分(Typecho 的伪静态规则):
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
    </IfModule>
    
  3. 在这段代码下方 添加一行:
    ErrorDocument 404 /404.html
    
    ✅ 修改后保存文件,整个文件看起来像这样:
    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
    </IfModule>
    
    ErrorDocument 404 /404.html
    

第三步:重启 Apache 服务器

修改配置后必须重启服务器才能生效:

  • 如果你会用命令行
    sudo systemctl restart apache2
    
  • 如果不会用命令行
    使用服务器管理面板(如宝塔面板)找到 Apache 服务,点击“重启”。

第四步:测试是否生效

  1. 打开浏览器,访问一个 肯定不存在的页面,比如:
    http://你的域名.com/this-page-does-not-exist
    (如果显示了你刚做的 404 页面,说明成功!)
  2. 如果没生效
    • 检查 .htaccess 文件是否在正确位置。
    • 检查 404.html 是否在网站根目录。
    • 清理浏览器缓存,或尝试用无痕模式访问。
    • 在 Cloudflare 后台 清理缓存(后面会教)。

第五步:清理 Cloudflare 缓存

如果之前访问过错误页面,Cloudflare 可能缓存了旧结果:

  1. 登录 Cloudflare 后台 → 进入域名 → 点击 “缓存”“配置”“清除缓存”
  2. 选择 “清除所有内容”,确认清理。
    ✅ 清理后再次测试访问不存在的页面。

常见问题解答

问题1:找不到 .htaccess 文件怎么办?

  • 情况一:Typecho 未开启伪静态
    登录 Typecho 后台 → 进入 “设置”“永久链接” → 启用 “地址重写” → 保存后会生成 .htaccess 文件。
  • 情况二:服务器隐藏了文件
    通过 FTP 或文件管理器开启“显示隐藏文件”选项(通常文件名以 . 开头的文件是隐藏的)。

问题2:修改后还是显示默认的 Apache 404 页面?

  • 检查 Apache 配置权限
    确保服务器允许通过 .htaccess 覆盖设置:
    打开 Apache 主配置文件(如 /etc/apache2/apache2.conf),找到你的网站目录配置,确认有:

    <Directory /var/www/html>
        AllowOverride All  # 必须是 All 而不是 None
    </Directory>
    

    修改后需要重启 Apache。

  • 检查文件路径是否正确
    确保 ErrorDocument 404 /404.html 中的路径 /404.html 能直接通过浏览器访问。


问题3:想用 Typecho 主题的风格怎么办?

如果你希望 404 页面和网站主题风格一致:

  1. 主题文件夹(如 /usr/themes/default/)新建一个 404.php 文件。
  2. 内容参考主题的 index.php,修改成 404 提示内容。例如:
    <?php
    $this->need('header.php'); // 加载主题头部
    ?>
    <div class="error-page">
        <h1>404 - 页面不存在</h1>
        <p><a href="<?php $this->options->siteUrl(); ?>">返回首页</a></p>
    </div>
    <?php
    $this->need('footer.php'); // 加载主题底部
    ?>
    
  3. 在 Typecho 配置文件 config.inc.php 中添加:
    define('__TYPECHO_404_FILE__', '/usr/themes/你的主题名/404.php');
    

终极懒人方案:用 Cloudflare 直接改

如果不想碰服务器,可以用 Cloudflare Workers 强行替换所有 404 页面:

  1. 进入 Cloudflare 后台 → Workers创建 Worker
  2. 复制以下代码到 Worker:
    addEventListener('fetch', event => {
      event.respondWith(handleRequest(event.request));
    });
    
    async function handleRequest(request) {
      const response = await fetch(request);
      if (response.status === 404) {
        return new Response(
          `<!DOCTYPE html>
          <html><body>
            <h1 style="color: red;">你访问的页面不存在!</h1>
            <a href="/">点此回家</a>
          </body></html>`,
          { status: 404, headers: { 'Content-Type': 'text/html' } }
        );
      }
      return response;
    }
    
  3. 保存后,进入 规则页面规则 → 创建规则:
    • URL 模式*你的域名.com/*
    • 设置:选择 Workers → 选择刚创建的 Worker。

总结

  • 修改服务器配置:适合长期使用,且能完全自定义样式。
  • 用 Cloudflare Workers:适合不想操作服务器的小白,但功能有限。