核心原理
DedeCMS 的伪静态实现主要依赖于两个部分:

(图片来源网络,侵删)
- 后台配置:告诉 DedeCMS 系统,你需要生成什么样的 URL 格式。
- 服务器配置:将用户访问的、看起来像静态文件的 URL(如
category/1.html)重写为服务器能够处理的动态 URL(如plus/list.php?tid=1),这一步是关键,由服务器软件(如 Apache 或 Nginx)完成。
第一步:准备工作
在开始之前,请务必备份!这是一个好习惯,可以防止误操作导致网站无法访问。
- 备份网站文件:将你的整个网站目录打包下载。
- 备份数据库:在 DedeCMS 后台,进入【系统】-> 数据库备份/还原,进行一次完整的数据备份。
- 确认服务器环境:你需要知道你的网站运行在哪种服务器上,最常见的是 Apache 和 Nginx,你可以通过在服务器上执行
phpinfo()函数来查看,或者在购买主机时服务商已经告知。
第二步:DedeCMS 后台设置
这是最基础的一步,目的是让 DedeCMS 生成符合你预期的链接。
-
登录 DedeCMS 后台。
-
进入【系统】-> 系统基本参数。
(图片来源网络,侵删) -
在左侧菜单栏选择 核心设置。
-
找到以下几项关键设置,并修改它们的值:
-
(可选) 是否使用伪静态
- 选项:是
- 说明:这个选项是总开关,如果这里选“否”,后面的设置可能无效,但有些版本的 DedeCMS 这个选项只是提示,主要看下面的具体规则。
-
(核心) 文件命名规则
(图片来源网络,侵删)- 栏目列表页:
{typedir}/index_{page}.html - 文档列表页:
{typedir}/list_{page}.html - 页:
{typedir}/{aid}.html {typedir}/{keyword}.html- 说明:这是定义你希望生成的 URL 格式。
{typedir}是栏目目录,{page}是页码,{aid}是文章 ID,你可以根据喜好自定义,但必须和后面服务器里的 Rewrite 规则匹配。
- 栏目列表页:
-
(核心) 顶级栏目默认页命名规则
- 选项:
{typedir}/index.html - 说明:设置顶级栏目首页的文件名。
- 选项:
-
(核心) 列表命名规则
- 选项:
{typedir}/list_{page}.html - 说明:设置栏目分页的文件名。
- 选项:
-
-
点击“保存”按钮。
第三步:服务器环境配置 (核心步骤)
这是伪静态能否成功的关键,你需要根据你的服务器类型,选择对应的操作。
Apache 服务器
Apache 服务器通过 .htaccess 文件来实现 URL 重写。
-
找到或创建
.htaccess文件- 这个文件通常位于你的网站根目录(
/public_html/或/wwwroot/)下。 - 如果没有,请创建一个名为
.htaccess的文件(注意前面的点,没有后缀名)。
- 这个文件通常位于你的网站根目录(
-
添加 Rewrite 规则
- 将以下规则复制并粘贴到你的
.htaccess文件中。 - 注意:请确保将
Your_DedeCMS_Path替换为你的 DedeCMS 程序在服务器上的实际路径(通常是 或/public_html/),你可以通过echo $_SERVER['DOCUMENT_ROOT'];来获取这个路径。
# 将 RewriteEngine 开启 RewriteEngine On # --- DedeCMS 5.7 伪静态规则 --- # 如果你的 DedeCMS 不在根目录,请修改 RewriteBase 的值 # 程序在 /cms/ 目录下,则 RewriteBase /cms/ RewriteBase / # 会员、搜索等页面 RewriteRule^(plus/list-([0-9]+).html)$plus/list.php?tid=$2 RewriteRule^(plus/view-([0-9]+)-([0-9]+).html)$plus/view.php?arcID=$2&pageno=$3 RewriteRule^(plus/list-([0-9]+)-([0-9]+).html)$plus/list.php?tid=$2&PageNo=$3 RewriteRule^(plus/list-([0-9]+)-([0-9]+).html)$plus/list.php?tid=$2&PageNo=$3 RewriteRule^(plus/feedback\.html)$plus/feedback\.php RewriteRule^(plus/([a-z]+)-([a-z]+)-([0-9]+)\.html)$plus/$2\.php?$3=$4 RewriteRule^(plus/([a-z]+)-([a-z]+)-([0-9]+)-([0-9]+)\.html)$plus/$2\.php?$3=$4&$5=$6 # 栏目、文章页面 RewriteRule^(category/([0-9]+)/([0-9]+)\.html)$plus/list\.php\?tid=$2&PageNo=$3 RewriteRule^(category/([0-9]+)\.html)$plus/list\.php\?tid=$2 RewriteRule^(archives/([0-9]+)\.html)$plus/view\.php\?arcID=$2 RewriteRule^(category/([0-9]+)/index\.html)$plus/list\.php\?tid=$2 RewriteRule^(category/([0-9]+)/list-([0-9]+)\.html)$plus/list\.php\?tid=$2&PageNo=$3 RewriteRule^(tags\.html)$plus/tags\.php RewriteRule^(tags/([^-]+)(-([0-9]+))\.html)$plus/tags\.php\?\/$1\/$3 # 默认首页 RewriteRule^index\.html$index\.php # 禁止访问 .htaccess 文件 <Files ".htaccess"> Order allow,deny Deny from all </Files> - 将以下规则复制并粘贴到你的
-
保存文件,并将其通过 FTP 上传到你的网站根目录,如果已存在,则用新内容覆盖。
Nginx 服务器
Nginx 服务器需要在网站的配置文件中添加 rewrite 规则。
-
找到 Nginx 配置文件
- 这个文件通常位于
/etc/nginx/sites-available/目录下,文件名是你的域名(如yourdomain.com)。 - 你需要登录到你的服务器(或使用主机面板的文件管理器)来编辑它。
- 这个文件通常位于
-
添加 Rewrite 规则
- 在
server { ... }块内,添加以下rewrite规则。
server { listen 80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com; # 替换为你的网站根目录 # ... 其他配置 ... # DedeCMS 伪静态开始 location / { if (!-e $request_filename) { rewrite "^/category/([0-9]+)/([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last; rewrite "^/category/([0-9]+)\.html$" /plus/list.php?tid=$1 last; rewrite "^/archives/([0-9]+)\.html$" /plus/view.php?arcID=$1 last; rewrite "^/category/([0-9]+)/index\.html$" /plus/list.php?tid=$1 last; rewrite "^/category/([0-9]+)/list-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last; rewrite "^/tags\.html$" /plus/tags.php last; rewrite "^/tags/([^-]+)(-([0-9]+))\.html$" /plus/tags.php?/$1/$3 last; rewrite "^/index\.html$" /index.php last; } } # ... 其他配置 ... } - 在
-
保存并重启 Nginx 服务
-
保存配置文件后,你需要让 Nginx 重新加载配置才能生效。
-
在服务器终端执行命令:
# 检查配置文件语法是否正确 nginx -t # 如果提示 successful,则重启 Nginx systemctl restart nginx # 或者 service nginx restart
-
第四步:更新和验证
-
更新栏目和文章缓存
- 登录 DedeCMS 后台。
- 进入【系统】-> 系统设置-> 全站生成HTML。
- 点击“开始生成”,这一步会根据你后台设置的规则,重新生成所有页面的链接,使其符合伪静态格式。
-
验证结果
- 前台检查:访问你的网站首页,点击任意一个栏目或文章,观察浏览器地址栏的 URL 是否已经变成了你设置的伪静态格式(如
category/1.html或archives/123.html)。 - 后台检查:进入【核心】-> 内容频道管理,点击任意一个栏目,在栏目设置里查看“栏目链接”,它应该也显示为伪静态的 URL。
- 检查是否正常:确保点击这些新链接后,页面能够正常打开,没有出现“404 Not Found”错误。
- 前台检查:访问你的网站首页,点击任意一个栏目或文章,观察浏览器地址栏的 URL 是否已经变成了你设置的伪静态格式(如
常见问题与解决方案
-
问题:设置后,页面打开出现 404 Not Found 错误。
- 原因:服务器没有正确配置 Rewrite 规则。
- 解决:
- 检查服务器类型:确认你用的是 Apache 还是 Nginx,并应用了对应的规则。
- 检查路径:对于 Apache,检查
RewriteBase是否正确;对于 Nginx,检查root路径是否正确。 - 检查权限:确保
.htaccess文件在根目录且有正确的读写权限(通常是 644)。 - 检查模块:对于 Apache,确保
mod_rewrite模块已启用(通常默认启用)。
-
问题:后台设置里的“栏目链接”还是动态链接。
- 原因:没有进行“全站生成HTML”操作。
- 解决:执行第四步的“更新栏目和文章缓存”操作。
-
问题:首页可以打开,但栏目页打开是空白或乱码。
- 原因:通常是服务器 Rewrite 规则中的路径问题。
- 解决:仔细检查 Nginx 配置中的
root路径或 Apache 的RewriteBase路径,确保指向你的网站根目录。
-
问题:使用了第三方模板,规则不匹配怎么办?
- 解决:你需要根据你的模板实际生成的链接结构,去修改服务器 Rewrite 规则,如果你的模板生成的是
html/category/1/1.html,你就需要把规则里的category/改成html/category/,关键在于后台设置和服务器规则必须保持一致。
- 解决:你需要根据你的模板实际生成的链接结构,去修改服务器 Rewrite 规则,如果你的模板生成的是
希望这份详细的教程能帮助你成功将 DedeCMS 改为伪静态!如果在操作中遇到任何问题,可以随时提问。
