- 访问 404 或 403 错误:浏览器提示“您请求的页面不存在”或“没有权限访问”。
- 空白或代码被直接显示:页面打开是空白的,或者在页面上直接看到了 PHP 代码的文本。
这两种情况的根源和解决方法不同,下面我将为您详细分析并提供解决方案。

(图片来源网络,侵删)
访问 404 或 403 错误(页面不存在)
这种情况最常见,通常是服务器配置或伪静态规则导致的。
原因分析
-
伪静态规则未开启或配置错误:
- DedeCMS 的
dede.php文件依赖于服务器的伪静态规则(也叫 URL 重写)来正常工作,它本身是一个普通的 PHP 文件,但通过伪静态规则,plus/dede.php会被伪装成/tags/这样的目录路径。 - 如果你的服务器(如 Apache 或 Nginx)没有正确配置或开启伪静态规则,服务器就会认为
/tags/是一个真实的目录,而找不到这个目录,于是返回 404 错误。
- DedeCMS 的
-
plus/dede.php文件丢失或权限错误:- 文件可能被误删。
- 文件权限不正确,导致服务器无法读取和执行它,通常需要
644权限,目录需要755权限。
-
服务器安全软件拦截:
(图片来源网络,侵删)- 某些服务器安全软件(如云锁、宝塔面板的防火墙、或者云服务商的 WAF)可能会因为
dede.php文件名包含dede(可能被认为是管理相关文件)而进行拦截。
- 某些服务器安全软件(如云锁、宝塔面板的防火墙、或者云服务商的 WAF)可能会因为
解决方案
步骤 1:检查并恢复 plus/dede.php 文件
- 确认你的网站根目录下的
plus/文件夹中是否存在dede.php文件。 - 如果不存在,请从 DedeCMS 5.7 的官方安装包中找到这个文件,重新上传到你的
plus/目录。 - 使用 FTP 或文件管理器,右键点击
plus/dede.php,设置文件权限为 644,检查plus/目录的权限是否为 755。
步骤 2:检查并配置伪静态规则(最关键的一步)
你需要根据你的服务器类型来配置。
A. Apache 服务器

(图片来源网络,侵删)
- 登录你的网站根目录。
- 检查是否存在一个名为
.htaccess的文件。 - 如果文件不存在:新建一个
.htaccess文件,将以下内容复制进去并保存。 - 如果文件已存在:将以下规则追加到文件的末尾,不要覆盖原有内容(特别是原有的 WordPress 或其他程序的规则)。
# DedeCMS 5.7 伪静态规则 RewriteEngine On RewriteBase / # -- 织梦标签 -- RewriteRule ^tags\.html$ /plus/dede\.php [L] RewriteRule ^tags/([a-z0-9\-]+)\.html$ /plus/dede\.php?tid=$1 [L] RewriteRule ^tags/([a-z0-9\-]+)/([0-9]+)\.html$ /plus/dede\.php?tid=$1&PageNo=$2 [L] # -- 其他规则 -- # 如果网站根目录在子目录,/blog,需要将 RewriteBase / 改为 RewriteBase /blog
B. Nginx 服务器
- 登录你的 Nginx 服务器。
- 找到你的网站配置文件,通常位于
/usr/local/nginx/conf/vhost/目录下,文件名是你的域名。 - 在
server { ... }块内,添加以下rewrite规则,通常建议添加在location / { ... }块内或其后面。
# DedeCMS 5.7 伪静态规则
location / {
# ... 其他配置 ...
if (!-e $request_filename) {
rewrite "^/tags\.html$" /plus/dede.php last;
rewrite "^/tags/([a-z0-9\-]+)\.html$" /plus/dede.php?tid=$1 last;
rewrite "^/tags/([a-z0-9\-]+)/([0-9]+)\.html$" /plus/dede.php?tid=$1&PageNo=$2 last;
}
}
- 保存配置文件后,执行命令
nginx -s reload重新加载 Nginx 配置。
步骤 3:检查安全软件
- 如果以上步骤都无效,请检查你服务器上安装的任何安全软件或防火墙。
- 尝试暂时禁用它们,然后访问
tags.html看看是否恢复,如果恢复了,说明是安全软件拦截了。 - 在安全软件的“防火墙规则”或“URL 防护”中,将
tags.html和/plus/dede.php添加到白名单中。
页面空白或直接显示 PHP 代码
这种情况通常与 PHP 环境和文件编码有关。
原因分析
-
PHP 环境不支持短标签
<?:dede.php文件的开头可能使用了<?而不是<?php,如果你的 PHP 配置中short_open_tag选项是Off,服务器就无法解析这种短标签,导致 PHP 代码被当作普通文本直接输出到浏览器,显示为空白或代码。
-
文件编码问题:
dede.php文件在保存时可能被保存为了 UTF-8 with BOM 格式,BOM(Byte Order Mark)是一个看不见的标记,它会直接输出到 HTML 文件的开头,导致 PHP 在header()函数之前就已经有内容输出,从而引发headers already sent错误,最终页面可能空白或显示错误信息。
解决方案
步骤 1:修改 PHP 短标签(推荐)
这是最简单且一劳永逸的方法。
- 使用 FTP 或文件管理器下载
plus/dede.php文件。 - 用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开它。
- 将文件开头的
<?修改为<?php。 - 保存文件(务必保存为 UTF-8 无 BOM 格式),然后重新上传到服务器覆盖原文件。
步骤 2:检查并修改 PHP 配置
如果你不想修改文件,可以修改服务器的 PHP 配置。
- 找到你的 PHP 配置文件
php.ini。 - 搜索
short_open_tag。 - 将其值修改为
On:short_open_tag = On。 - 保存
php.ini文件,并重启你的 Web 服务器(如 Apache 或 Nginx)使配置生效。
步骤 3:修正文件编码(去除 BOM)
- 使用支持 BOM 检测的编辑器(如 Notepad++, Dreamweaver)打开
plus/dede.php文件。 - 在编辑器中,通常可以在“格式”或“编码”菜单下看到当前文件的编码格式。
- 如果显示为 “UTF-8 with BOM”,请将其转换为 “UTF-8 without BOM”。
- 保存文件并重新上传。
总结与排查顺序
遇到“dede.php 无效”问题时,请按以下顺序进行排查,通常能解决 99% 的问题:
- 首要检查:伪静态规则,这是最常见的原因,确保你的服务器(Apache/Nginx)正确配置了 DedeCMS 的规则。
- 基础检查:确认
plus/dede.php文件存在且权限正确(644)。 - 编码检查:用代码编辑器打开
dede.php,将<?改为<?php,并确保文件保存为UTF-8 无 BOM格式。 - 环境检查:如果还不行,检查 PHP 的
short_open_tag设置是否为On。 - 最后检查:排查服务器上的安全软件或防火墙是否拦截了该文件。
按照这个流程走一遍,你的 tags.html 页面应该就能正常访问了。
