先理清“伪静态”和“HTML缓存”
-
伪静态
(图片来源网络,侵删)- 是什么:它并不是真正生成了静态的
.html文件,而是通过服务器(如 Apache 的mod_rewrite或 Nginx 的rewrite模块)的 URL 重写规则,将一个动态的 URL(如plus/view.php?aid=123)伪装成一个静态的 URL(如/plus/view-123.html)。 - 目的:
- SEO 优化:静态 URL 对搜索引擎更友好,看起来更“正规”。
- 用户体验:URL 更简洁、美观,易于记忆和分享。
- 隐藏技术:隐藏了动态脚本(如
.php),在一定程度上增加了安全性。
- 是什么:它并不是真正生成了静态的
-
HTML 缓存
- 是什么:DedeCMS 在你发布文章或生成栏目时,会根据模板规则,直接将动态页面(如
plus/view.php?aid=123转换成一个真正的.html文件(如/plus/view-123.html),并保存在你的网站目录中。 - 目的:
- 极致性能:当用户访问这个页面时,服务器直接读取并返回这个 HTML 文件,无需经过 PHP 解释器和数据库查询,速度极快,大大减轻了服务器负担。
- 减轻数据库压力:高并发访问时,不会对数据库造成巨大压力。
- 是什么:DedeCMS 在你发布文章或生成栏目时,会根据模板规则,直接将动态页面(如
关键联系:在 DedeCMS 中,“伪静态”和“HTML缓存”是相辅相成的,当你开启了 HTML 缓存后,DedeCMS 会自动生成静态的 .html 文件,这时,伪静态规则的作用就是让用户通过一个美观的 URL(如 view-123.html)访问到这个已经生成的静态文件。
第一步:开启 DedeCMS 后台的 HTML 缓存功能
这是实现静态化的基础操作,必须在后台完成。
-
登录 DedeCMS 后台。
(图片来源网络,侵删) -
进入 【系统】 -> 【系统基本参数】。
-
在左侧菜单中找到并点击 【核心设置】。
-
找到以下两个关键选项并进行设置:
-
是否使用伪静态:
(图片来源网络,侵删)- 选择 “是”,这是启用伪静态功能的前提。
-
文件保存目录:
- 这里通常已经设置为
../html/,这是 DedeCMS 默认存放生成 HTML 文件的目录。请确保这个目录存在并且有写入权限(755或777权限,但为了安全,建议755)。
- 这里通常已经设置为
-
-
保存。
第二步:开启栏目和文档的 HTML 生成
设置好基本参数后,你还需要在具体的栏目和文档设置中启用生成。
-
生成栏目 HTML:
- 进入 【栏目管理】,选择你想要生成静态 HTML 的栏目。
- 点击 【修改】。
- 在栏目选项中,找到 “栏目列表选项”。
- 勾选 “生成HTML”。
- 保存。
-
生成文档/文章 HTML:
- 进入 【核心】 -> 维护】 -> 【文档HTML一键生成】。
- 你可以选择生成所有栏目、选择特定栏目,或者生成特定文章。
- 点击 “开始生成”,这个过程会根据你设置好的模板,在
/html/目录下生成大量的.html文件。
注意:你的 /html/ 目录下已经生成了真正的静态文件,/html/123/1.html(栏目页)和 /html/view-123.html(文章页)。
第三步:配置服务器伪静态规则(最关键的一步)
这一步是让服务器将用户请求的“伪静态 URL”正确地指向到已经生成的“静态 HTML 文件”。
你需要根据你的服务器类型来配置不同的规则。
A. Apache 服务器伪静态规则
-
开启
mod_rewrite模块: 确保你的 Apache 配置文件中mod_rewrite模块已开启(通常默认是开启的)。 -
创建或修改
.htaccess文件: 在你的网站根目录(public_html或www)下,找到或创建一个名为.htaccess的文件,如果已存在,请在其内容最上方添加以下规则:<IfModule mod_rewrite.c> RewriteEngine On # 绑定域名到目录 # RewriteBase / # 防止盗链 RewriteCond %{HTTP_REFERER} !^http://(.+.)?你的域名.com/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+.)?你的域名.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/ [NC] RewriteCond %{HTTP_REFERER} !^http://(.+.)?baidu.com/.*$ [NC] RewriteRule .(jpg|gif|png|bmp|swf|jpeg)$ http://你的域名/images/forbidden.gif [R,NC,L] # 织梦伪静态规则 # 文档列表页 RewriteRule ^index.html$ /index.php [I] # 栏目页 RewriteRule ^plus/list-([0-9]+).html$ /plus/list.php?tid=$1 [I] RewriteRule ^plus/list-([0-9]+)-([0-9]+)-([0-9]+).html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 [I] # 文章页 RewriteRule ^plus/view-([0-9]+)-([0-9]+).html$ /plus/view.php?arcID=$1&pageno=$2 [I] RewriteRule ^plus/view-([0-9]+).html$ /plus/view.php?arcID=$1 [I] </IfModule>注意:
- 将
你的域名.com替换成你自己的域名。 [I]标志在某些服务器配置下可能需要改为[L]或去掉,如果规则不生效,可以尝试去掉[I]。RewriteBase /这行如果网站在根目录下,通常可以注释掉或保持原样。
- 将
B. Nginx 服务器伪静态规则
-
修改 Nginx 配置文件: 找到你的网站配置文件(通常在
/etc/nginx/sites-available/目录下),在server { ... }块中添加以下rewrite规则。server { listen 80; server_name 你的域名.com; root /你的网站根目录; # /var/www/html # 织梦伪静态规则 location / { rewrite "^/index\.html$" /index.php last; rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last; rewrite "^/plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 last; rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2 last; rewrite "^/plus/view-([0-9]+)\.html$" /plus/view.php?arcID=$1 last; # 如果你的首页也生成了 index.html,可以加上下面这句 # if (!-e $request_filename) { # rewrite ^(.*)$ /index.php?s=$1 last; # } } # ... 其他配置,如 PHP-FPM 配置等 ... } -
重启 Nginx 服务: 保存配置文件后,执行命令重启 Nginx 使配置生效:
sudo systemctl restart nginx
第四步:验证与维护
-
验证:
- 清空浏览器缓存。
- 访问你的网站首页,看看是否正常。
- 访问一篇你生成的文章,
http://你的域名.com/plus/view-123.html。 - 检查页面源码,确认是静态的 HTML 内容,而不是 PHP 代码。
- 检查服务器响应头,状态码应该是
200 OK,而不是301或302(除非你做了重定向)。
-
后如何处理:
- 当你新增、修改或删除文章后,对应的静态 HTML 文件就会失效。
- DedeCMS 会自动处理:在下次有人访问这个页面时,系统会重新生成一个新的 HTML 文件并覆盖旧的。
- 为了更好的性能,你也可以手动进入 【文档HTML一键生成】,重新生成你修改过的栏目或文章。
常见问题排查
-
404 Not Found 错误:
- 原因:伪静态规则没有生效或写错了。
- 解决:检查
.htaccess(Apache) 或 Nginx 配置文件中的语法是否正确,并确保模块已加载,重启服务器后重试。
-
打开页面是空白或者显示 PHP 源码:
- 原因:服务器没有解析 PHP 文件,或者
/html/目录没有写入权限。 - 解决:检查 PHP-FPM/Apache 的 PHP 解析配置,确保
/html目录权限正确(通常是755)。
- 原因:服务器没有解析 PHP 文件,或者
-
URL 不变,还是动态的:
- 原因:后台【系统基本参数】中的“是否使用伪静态”选项设置为“否”。
- 解决:将其改为“是”,并保存。
-
后,页面内容还是旧的:
- 原因:浏览器缓存了旧页面,或者 DedeCMS 没有及时重新生成 HTML。
- 解决:强制刷新浏览器(Ctrl+F5),或者手动去后台重新生成对应的文章/栏目页面。
通过以上四个步骤,你就可以成功地为 DedeCMS 网站配置好伪静态和 HTML 缓存,从而显著提升网站的加载速度和用户体验。
