通过网站后台设置(推荐,最简单)
这是最直接、最安全的方法,DedeCMS 后台已经集成了相关功能。

步骤 1:创建 404 页面
你需要创建一个美观且实用的 404 错误页面。
-
设计页面内容:你可以自己设计一个 HTML 页面,内容通常包括:
- 友好的提示语(如“抱歉,您访问的页面不存在或已被删除”)
- 返回网站首页的链接
- 网站地图的链接
- 搜索框
- 一些引导性的内容
-
保存页面:将这个页面保存为
html,并上传到你的网站根目录(即与index.php同级的目录)。
步骤 2:在 DedeCMS 后台启用 404 页面
-
登录后台:使用你的管理员账号登录 DedeCMS 后台。
(图片来源网络,侵删) -
进入系统设置:在左侧菜单栏中,找到并点击 “系统” -> “系统基本参数”。
-
找到站点设置:在“系统基本参数”页面中,切换到 “站点设置” 选项卡。
-
配置 404 页面:在这个选项卡中,找到 “自定义错误页面” 这一栏。
- 404 页面:在这里填入你刚刚上传的页面路径,即
/404.html。 - 500 页面(可选):同样可以设置一个服务器内部错误的页面。
- 403 页面(可选):禁止访问的页面。
- 404 页面:在这里填入你刚刚上传的页面路径,即
-
保存设置:点击页面底部的 “保存” 按钮。
(图片来源网络,侵删)
步骤 3:服务器配置(关键步骤)
重要:仅仅在 DedeCMS 后台设置是不够的!你必须在你的 Web 服务器(如 Apache 或 Nginx)上进行配置,让服务器在遇到 404 错误时,真正去调用你设置的 html 页面,并返回正确的 404 HTTP 状态码。
对于 Apache 服务器:
你需要修改网站根目录下的 .htaccess 文件,如果这个文件不存在,就新建一个。
在 .htaccess 文件中添加以下代码:
# 设置 404 错误页面 ErrorDocument 404 /404.html
对于 Nginx 服务器:
你需要修改 Nginx 的配置文件(通常是 nginx.conf 或你网站对应的配置文件),在 server 块内添加以下代码:
# 设置 404 错误页面 error_page 404 /404.html;
修改完 Nginx 配置后,需要重载 Nginx 配令使其生效:
sudo nginx -s reload
通过修改 PHP 文件(备选方法)
如果你的服务器权限有限,无法修改 .htaccess 或 Nginx 配置文件,可以尝试这个方法,这个方法的核心是让 DedeCMS 的所有页面都通过一个入口文件(如 index.php)来执行,这样我们就可以在入口文件中捕获 404 错误。
步骤 1:创建 404 页面
与方法一相同,创建一个 html 页面并上传到网站根目录。
步骤 2:修改 index.php 文件
- 打开
index.php:在网站根目录下找到index.php文件。 - 添加代码:在文件最顶部,
<?php标签之后,添加以下 PHP 代码:
<?php
// ... index.php 文件原有的代码 ...
// 在这里添加 404 处理逻辑
// 获取请求的 URI
$request_uri = $_SERVER['REQUEST_URI'];
// 检查是否是静态页面(.html)或者动态页面
// 这里我们做一个简单的判断:如果请求的页面不是 index.php 且不是后台相关文件
if (strpos($request_uri, 'index.php') === false &&
strpos($request_uri, 'dede') === false &&
strpos($request_uri, 'plus') === false) {
// 尝试判断这个页面是否存在(可选,更精确)
// 检查是否是静态HTML文件
$static_file = trim($request_uri, '/');
if (!file_exists($static_file)) {
// 如果文件不存在,则显示 404 页面
header("HTTP/1.1 404 Not Found");
include('404.html');
exit();
}
}
// ... index.php 文件原有的代码 ...
require_once (dirname(__FILE__) . "/include/common.inc.php");
require_once DEDEINC."/arc.partview.class.php";
$GLOBALS['_arcs'] = array();
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $cfg_df_style . "/index.htm");
$pv->Display();
?>
代码解释:
header("HTTP/1.1 404 Not Found");:这一行至关重要,它告诉浏览器和搜索引擎,这是一个“未找到”的错误,而不是一个正常的页面。include('404.html');:包含你的自定义 404 页面内容。exit();:执行完 404 页面后,立即终止脚本,防止后续代码继续执行。
注意:这个方法相对简单,但可能不够精确,它只是简单判断了请求的 URI 是否存在对应的文件,对于复杂的动态路由,可能会有误判。方法一(服务器配置)是更专业、更可靠的做法。
重要注意事项
- HTTP 状态码:无论使用哪种方法,确保你的 404 页面能返回正确的
HTTP 404状态码,你可以使用浏览器开发者工具(F12)的“网络”标签来检查,如果返回的是200 OK,那搜索引擎会认为这个“404页面”是真实存在的,反而会造成负面影响。 - 页面路径:在后台设置和服务器配置中,404 页面的路径必须是相对于网站根目录的,
/404.html,不要使用绝对路径(如http://www.yoursite.com/404.html)。 - 测试:设置完成后,一定要进行测试,尝试访问一个不存在的页面,
http://www.yoursite.com/abc123.html,看看是否能正确跳转到你的 404 页面,并且检查浏览器开发者工具中的网络状态码是否为 404。 - 不要对后台使用:确保你的 404 设置不会影响到 DedeCMS 后台的管理页面,方法一和二都通过排除了
dede等目录来避免这个问题。
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 服务器配置 | 标准、专业、可靠,能正确返回 404 状态码,对 SEO 友好。 | 需要服务器修改权限(如修改 .htaccess 或 nginx.conf)。 |
⭐⭐⭐⭐⭐ (强烈推荐) |
| 修改 PHP | 无需服务器权限,适合虚拟主机等环境。 | 可能不够精确,逻辑相对复杂,性能略差。 | ⭐⭐⭐ (备选方案) |
对于绝大多数用户,强烈建议使用方法一,这是处理 404 错误的最佳实践。
