DedeCms 手机站静态化完整教程
为什么要做手机站静态化?
在开始之前,我们先明确一下静态化的好处:

- 极致的加载速度:静态页面(
.html)是纯文本文件,服务器直接发送给浏览器,无需经过PHP解释、数据库查询等复杂过程,响应速度极快。 - 减轻服务器压力:静态页面不占用CPU和数据库资源,可以大大降低服务器的负载,尤其是在网站访问量较大时效果显著。
- 利于SEO优化:搜索引擎(如百度、谷歌)更青睐静态页面,认为它们更稳定、更可靠,抓取和索引的效率也更高。
- 提升用户体验:用户打开网页的速度快,等待时间短,体验自然更好。
准备工作
在动手之前,请确保你已经完成了以下准备工作:
-
环境要求:
- 一台已经安装并正常运行 DedeCms V5.7 或 V5.8 的服务器(Linux + Nginx 或 Apache 均可,但 Nginx 的伪静态规则更简洁)。
- 服务器权限足够,可以修改文件和目录。
-
数据备份:这是最重要的一步!
- 备份数据库:进入 DedeCms 后台,点击【系统】->【数据库备份/还原】,执行完整的数据库备份。
- 备份网站文件:通过 FTP 或服务器管理工具,将整个网站目录(包括
/dede、/include、/templets、/special等)打包下载到本地。
-
手机站模板:
(图片来源网络,侵删)- 确保你已经准备好了手机专用的模板文件,这些模板存放在
/templets/default/mobile/目录下。 - 后台已经配置好了【默认手机模板】,路径为:【系统】->【系统基本参数】->【核心设置】->
cfg_mobile_dir(默认为/mobile/)。
- 确保你已经准备好了手机专用的模板文件,这些模板存放在
核心步骤:开启并配置静态化
手机站的静态化主要分为两步:开启目录静态化 和 设置伪静态规则。
步骤 1:开启手机站目录静态化
这一步是告诉 DedeCms,将手机动态页面生成到指定的静态HTML目录中。
-
登录 DedeCms 后台。
-
进入【系统】-> 【核心设置】。
(图片来源网络,侵删) -
找到 “手机页面栏目设置” 部分。
-
你会看到类似下面的配置项:
- 手机主页文件名:
index.html - 手机栏目列表文件名:
list_{tid}.html - 手机文章页面文件名:
{aid}.html - 手机专题列表文件名:
special/{tid}/index.html - 手机专题内容文件名:
special/{tid}/{cid}.html
- 手机主页文件名:
-
关键操作:在 “手机栏目列表文件名” 和 “手机文章页面文件名” 的输入框中,不要使用默认的动态路径(如
list.php?tid=...),而是直接使用上面提供的静态化模板,list_{tid}.html和{aid}.html。 -
点击【保存】。
步骤 2:设置服务器伪静态规则
这是静态化能否成功的关键一步,伪静态的作用是,当用户访问一个不存在的 .html 文件时,服务器能将其“伪装”成对 index.php 的请求,从而让 DedeCms 处理并返回正确的页面。
请根据你的服务器环境选择对应的规则:
A. Nginx 服务器 (推荐)
-
找到你的 Nginx 配置文件,通常位于
/usr/local/nginx/conf/nginx.conf或站点配置目录(如/etc/nginx/sites-available/your_domain)。 -
在
server { ... }块中,添加以下规则:# DedeCms 手机站伪静态规则 if ($host ~* m\.yourdomain\.com) { # 将 m.yourdomain.com 替换为你的手机域名 rewrite "^/index\.html$" /index.php last; rewrite "^/list-([0-9]+)\.html$" /list.php?tid=$1 last; rewrite "^/view-([0-9]+)-([0-9]+)\.html$" /view.php?aid=$1&cid=$2 last; rewrite "^/special/([0-9]+)/index\.html$" /special/index.php?tid=$1 last; rewrite "^/special/([0-9]+)/([0-9]+)\.html$" /special/index.php?tid=$1&cid=$2 last; }说明:
m.yourdomain.com是你的手机站域名,请务必替换成你自己的。- 如果你的手机站和主站使用二级目录(如
www.yourdomain.com/mobile/),规则需要稍作调整,将^/改为^/mobile/。 last标志表示停止处理当前的rewrite检验,然后搜索匹配的location。
-
保存配置文件,然后执行
nginx -s reload或重启 Nginx 服务使配置生效。
B. Apache 服务器
-
确保你的 Apache 已经开启了
mod_rewrite模块,通常在httpd.conf文件中找到LoadModule rewrite_module modules/mod_rewrite.so并确保其没有被注释。 -
在网站根目录(通常是
/public_html或/www)下创建或编辑一个名为.htaccess的文件。 -
将以下规则写入
.htaccess文件:# DedeCms 手机站伪静态规则 RewriteEngine On # 将 RewriteBase 后面的路径改为你的网站根目录,如果是一级域名则为 / # 如果是二级目录,/mobile/,则 RewriteBase /mobile/ RewriteBase / # 手机域名判断,请将 m.yourdomain.com 替换为你的手机域名 # 如果使用二级目录,此判断可以去掉,直接应用下面的规则 # RewriteCond %{HTTP_HOST} ^m\.yourdomain\.com [NC] RewriteRule ^index\.html$ index.php [L] RewriteRule ^list-([0-9]+)\.html$ list.php?tid=$1 [L] RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ view.php?aid=$1&cid=$2 [L] RewriteRule ^special/([0-9]+)/index\.html$ special/index.php?tid=$1 [L] RewriteRule ^special/([0-9]+)/([0-9]+)\.html$ special/index.php?tid=$1&cid=$2 [L]说明:
RewriteBase /是关键,如果你的网站在二级目录下,请务必修改为RewriteBase /你的目录/。[L]标志表示如果这条规则被匹配,则停止处理后续的RewriteRule。
-
保存
.htaccess文件,Apache 会自动读取它。
步骤 3:生成手机站静态页面
配置完成后,你需要手动生成一次静态页面,让 DedeCms 将现有的内容输出为 HTML 文件。
-
登录 DedeCms 后台。
-
点击【生成】-> 【手机页面生成】。
-
你会看到几个选项:
- 更新主页:点击它,生成手机站首页
index.html。 - 更新栏目:点击它,生成所有手机站栏目的列表页(如
list_1.html,list_2.html等)。 - 更新文档:点击它,生成所有手机站文章的详情页(如
html,html等)。这个操作会比较耗时,如果文章很多,建议分批进行或选择“仅更新当天”。 - 更新专题:如果你的手机站有专题,点击它生成专题页面。
- 更新主页:点击它,生成手机站首页
-
按需点击生成,生成成功后,你会看到提示信息。
步骤 4:验证结果
- 通过 FTP 连接服务器,进入你配置的静态目录(默认是
/mobile/)。 - 检查目录下是否生成了
index.html、list_1.html、html等静态文件。 - 在浏览器中访问你的手机站域名(如
m.yourdomain.com或www.yourdomain.com/mobile/)。 - 查看网页源代码:在浏览器页面右键,选择“查看网页源代码”,如果看到的是完整的 HTML 代码,而不是包含 PHP 代码的源,那么恭喜你,静态化已经成功!如果源代码里还有
<?php ... ?>,说明静态化失败,请检查前几步的配置。
后续维护与注意事项
-
后如何处理?
- 每次在后台添加、修改或删除手机站的内容后,都需要回到【生成】->【手机页面生成】页面,重新生成对应的页面。
- 为了提高效率,可以只更新“主页”、“栏目”或“当天文档”,而不是每次都全站生成。
-
动态链接的保留:
- 即使开启了静态化,DedeCms 在后台的链接仍然是动态的(如
view.php?aid=100),这是正常的,因为伪静态规则会自动将用户对html的请求重定向到这个动态地址。 - 但你需要在模板文件(如
article_article.htm)中,将文章链接的静态地址写对,DedeCms 的标签会自动处理,但如果手动修改,请确保链接是{dede:field.id/}.html这样的格式。
- 即使开启了静态化,DedeCms 在后台的链接仍然是动态的(如
-
缓存问题:
- 如果发现修改后页面内容没有更新,可以尝试清除浏览器缓存或服务器缓存(如使用了 CDN 或 Redis 缓存)。
- 检查
/data目录下的缓存文件,有时旧的缓存文件会影响显示。
-
移动适配:
- 静态化只解决了“快”的问题,别忘了“适配”,确保你的手机站模板在
<head>部分正确设置了viewport标签,并且使用了响应式设计或独立的移动端样式。
<head> ... <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> ... </head> - 静态化只解决了“快”的问题,别忘了“适配”,确保你的手机站模板在
常见问题排查
-
Q: 404 Not Found,访问
.html页面时页面找不到。- A: 伪静态规则没有生效,请检查 Nginx/Apache 的配置是否正确,并确保已经重启了服务,对于 Nginx,检查
server_name和rewrite规则是否匹配你的域名和路径。
- A: 伪静态规则没有生效,请检查 Nginx/Apache 的配置是否正确,并确保已经重启了服务,对于 Nginx,检查
-
Q: 访问
.html页面,但显示的是首页内容或其他错乱内容。- A: 伪静态规则中的
rewrite目标路径错误,把list-1.html重定向到了index.php而不是list.php?tid=1,请仔细核对伪静态规则。
- A: 伪静态规则中的
-
Q: 生成了静态页面,但点击栏目或文章链接后跳转到动态页面。
- A: 模板中的链接标签没有使用静态化格式,检查模板文件里的
{dede:type}和{dede:arclist}等标签,确保它们生成的链接是list_{tid}.html和{aid}.html,DedeCms 默认标签通常能自动识别静态化设置,如果不行,可能需要手动指定。
- A: 模板中的链接标签没有使用静态化格式,检查模板文件里的
-
Q: 服务器 500 Internal Server Error。
- A: 伪静态规则语法错误,检查
.htaccess文件或 Nginx 配置文件中的语法,特别是括号、分号等符号是否匹配。
- A: 伪静态规则语法错误,检查
