Tag 静态化(也称为“伪静态”)的主要目的是:

- SEO 优化:生成
.html后缀的静态页面,对搜索引擎更友好,有利于收录。 - 提升用户体验:URL 更美观、更符合用户习惯,易于理解和记忆。
- 减轻服务器压力:当页面被访问时,直接读取静态 HTML 文件,而不是动态解析 PHP 和查询数据库,可以显著减轻服务器 CPU 和数据库的负担。
在 DedeCMS 5.7 中,Tag 静态化主要通过修改核心文件和配置服务器重写规则来实现,下面是详细的步骤和说明。
第一步:开启 DedeCMS 系统的“使用伪静态”
这是最基础的一步,告诉 DedeCMS 系统你需要使用伪静态功能。
- 登录您的 DedeCMS 后台。
- 进入【系统】-> 【系统基本参数】。
- 在左侧菜单中找到并点击【核心设置】。
- 找到“是否使用伪静态”这一项,将其值修改为“是”。
- 点击【确定】保存设置。
第二步:修改 arc.taglist.class.php 文件(核心步骤)
这是实现 Tag 静态化的关键,我们需要修改这个文件,让它在生成 Tag 页面时,生成一个静态的 HTML 文件,而不是一个动态的 PHP 链接。
-
文件位置:
/include/arc.taglist.class.php -
修改方法: 用编辑器(如 Dreamweaver、VS Code 或 Notepad++)打开这个文件。
-
查找并修改代码: 搜索
GetMakeTagList函数,在这个函数中,找到生成链接的代码段,它通常是这样的:// 找到类似下面这行代码 $this->TagInfos['link'] = $cfg_cmsurl."/tags.php?/".urlencode($this->TagInfos['keyword'])."/";
将其修改为:
// 修改为生成 .html 后缀的链接 $this->TagInfos['link'] = $cfg_cmsurl."/tags/".urlencode($this->TagInfos['keyword']).".html";
注意:这里的
/tags/是你自定义的目录,可以根据你的喜好修改,/tag/或/list/tag/,确保这个目录在你的网站根目录下存在。
第三步:修改 taglib/taglib.lib.php 文件(修正链接)
这一步是为了确保在模板文件(如首页、列表页)中调用 Tag 时,生成的链接也是静态的。
-
文件位置:
/include/taglib/taglib.lib.php -
查找并修改代码: 搜索
function GetTags函数,找到其中生成链接的部分,通常是return $tags;之前。找到类似这样的代码块:
foreach($dsql->GetArray() as $row) { $row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['tag'])."/"; $tags[] = $row; }将其修改为:
foreach($dsql->GetArray() as $row) { // 修改为生成 .html 后缀的链接 $row['link'] = $cfg_cmsurl."/tags/".urlencode($row['tag']).".html"; $tags[] = $row; }
第四步:配置服务器重写规则(伪静态规则)
这是最重要的一步,它告诉 Web 服务器(如 Apache 或 Nginx)如何将用户请求的 xxx.html 地址,真实地指向 tags.php 文件来处理。
A. Apache 服务器
-
确认开启
mod_rewrite:确保你的 Apache 服务器已加载了mod_rewrite模块,通常虚拟主机都已默认开启。 -
创建或修改
.htaccess文件: 在你的网站根目录下,找到或创建一个名为.htaccess的文件,如果文件不存在,请创建一个。 -
添加以下规则:
<IfModule mod_rewrite.c> RewriteEngine On # 将 /tags/xxx.html 的请求转发给 tags.php RewriteRule ^tags/(.*).html$ /tags.php?/$1/ [L] # 如果你的网站开启了全站伪静态,还需要添加以下规则 # RewriteRule ^tags/(.*).html$ /tags.php?/$1/ [L] # RewriteRule ^index.html$ /index.php [L] # RewriteRule ^plus/list-([0-9]+).html$ /plus/list.php?tid=$1 [L] # RewriteRule ^plus/view-([0-9]+)-([0-9]+)-([0-9]+).html$ /plus/view.php?aid=$1&cid=$2&mid=$3 [L] # ... 其他你的网站用到的伪静态规则 ... </IfModule>
规则解释:
RewriteRule ^tags/(.*).html$ /tags.php?/$1/ [L]^tags/(.*).html$:匹配所有以tags/开头,以.html结尾的 URL。tags/网站建设.html。/tags.php?/$1/:将匹配到的内容(网站建设)作为参数,传递给tags.php。$1是一个变量,代表第一个括号 捕获到的内容。[L]:表示如果这条规则匹配成功,就停止处理后续的 RewriteRule。
B. Nginx 服务器
-
找到配置文件:编辑 Nginx 的虚拟主机配置文件,通常在
/etc/nginx/sites-available/目录下。 -
在
server块内添加以下规则:server { ... 其他配置 ... location / { ... 其他规则 ... } # 添加 Tag 静态化规则 location ~* ^tags/(.*).html$ { rewrite "^tags/(.*).html$" /tags.php?/$1/ last; } ... 其他配置 ... }规则解释:
location ~* ^tags/(.*).html$:匹配所有以tags/开头,以.html结尾的 URL,不区分大小写。rewrite "^tags/(.*).html$" /tags.php?/$1/ last;:将 URL 重写,并传递参数。last:表示停止在本 location 中搜索,并搜索匹配新 URI 的 location。 -
重启 Nginx:保存配置文件后,执行命令
sudo nginx -s reload或sudo systemctl restart nginx使配置生效。
第五步:更新和生成
完成以上所有步骤后,你需要更新一下系统,让新的规则生效。
- 进入 DedeCMS 后台【生成】-> 更新主页HTML。
- 进入【更新缓存】。
- (可选但推荐)进入【文档列表】-> 文档HTML设置,确保“使用动态页”是“否”,然后选择“更新所有HTML”。
- 为了生成 Tag 静态页面,你可以访问你的 Tag 列表页(
你的域名/tags.php),系统会自动为你已存在的 Tag 生成对应的.html文件,新生成的文章带有 Tag 也会自动生成。
常见问题与排查
-
404 Not Found 错误:
- 原因:伪静态规则未生效或配置错误。
- 排查:
- 检查
.htaccess文件是否在网站根目录,且内容正确。 - 检查 Nginx/Apache 的配置语法是否正确,并已重启服务。
- 确认服务器是否支持伪静态。
- 尝试直接访问
tags.php看是否正常,以排除 PHP 代码问题。
- 检查
-
页面空白或显示 PHP 源码:
- 原因:服务器没有将
.html请求正确地转发给tags.php解析。 - 排查:重新检查第四步的伪静态规则,确保
RewriteRule的语法和目标路径正确。
- 原因:服务器没有将
-
生成的链接不正确:
- 原因:第二步或第三步的代码修改有误。
- 排查:重新核对
arc.taglist.class.php和taglib/taglib.lib.php中的$this->TagInfos['link']和$row['link']是否被正确修改为.html格式。
通过以上五个步骤,你就可以成功地为 DedeCMS 5.7 的 Tag 标签实现静态化,从而提升网站的 SEO 和性能。
