第一部分:Dede Tag 标签静态化详解
默认情况下,DedeCMS 的 Tag 标签页是动态的,URL 类似于 tags.php?/关键词/,这种 URL 对搜索引擎不友好,且不利于权重传递,将其改为静态化(如 /tags/关键词.html)是首要任务。

(图片来源网络,侵删)
为什么需要静态化?
- SEO 友好:静态 URL 结构清晰,包含关键词,更容易被搜索引擎理解和抓取。
- 用户体验:用户看到
.html后缀,会认为这是一个固定、权威的页面,信任度更高。 - 权重集中:静态页面可以被搜索引擎正常收录,并将相关权重传递给该标签下的所有文章。
- 便于分享:简洁的 URL 更易于复制和分享。
如何实现 Tag 标签静态化?
主要有两种方法:官方插件法(推荐) 和 手动修改法。
使用官方插件(最简单、最安全)
这是最推荐的方法,因为官方插件经过测试,兼容性好,且不会破坏核心文件。
-
下载插件:
- 访问 DedeCMS 官方论坛或插件下载中心。
- 搜索并下载 “tag静态化” 或 “tag伪静态” 相关的插件,通常会有一个名为
taghtml.zip或类似名称的压缩包。
-
上传并安装:
(图片来源网络,侵删)- 将下载的插件包解压。
- 将解压后的文件夹通过 FTP 上传到你的网站根目录
/dede/下。 - 登录你的 DedeCMS 后台,进入 “插件” -> “插件管理”。
- 你应该能看到新上传的插件,点击 “安装” 或 “启用”。
-
生成规则:
- 安装插件后,系统会自动或提示你生成 Tag 静态规则。
- 进入后台 “系统” -> “系统基本参数” -> “核心设置”。
- 找到 “是否使用标签静态” 选项,将其设置为 “是”。
- 找到 “标签命名规则”,通常插件会自动设置好,
tags/{tag}.html,你可以根据需要修改,但一般无需改动。 - 保存设置。
-
重新生成:
- 进入 “生成” -> “更新Tag缓存”,点击执行。
- 然后进入 “批量更新文档”,选择所有栏目,重新生成 HTML,这一步至关重要,因为文章页中的 Tag 链接需要被更新。
完成以上步骤后,你的 Tag 页面 URL 就会变成 /tags/关键词.html 的静态形式。
手动修改代码(适合有一定技术基础的用户)
如果你不想使用插件,或者找不到合适的插件,可以手动修改。

(图片来源网络,侵删)
重要提示:修改前务必备份原文件!以防出错导致网站无法访问。
-
修改
arc.taglist.class.php文件- 路径:
/include/arc.taglist.class.php - 打开该文件,找到
GetTags()函数(大约在第 258 行)。 - 将原来的代码:
return $this->MakeTag($tag);
- 修改为:
// 生成静态链接 $tagurl = $GLOBALS['cfg_cmsurl']."/tags/".urlencode($tag).".html"; return "<a href='".$tagurl."' target='_blank'>".$tag."</a>";
- 注意:
urlencode()函数可以处理中文等特殊字符,确保链接正确。
- 路径:
-
修改
taglib/tag.lib.php文件- 路径:
/include/taglib/tag.lib.php - 打开该文件,找到
lib_tag()函数(大约在第 35 行)。 - 将原来的代码:
$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
- 修改为:
// 生成静态链接 $row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword']).".html";
- 路径:
-
修改
tags.php文件(可选,但推荐)- 路径:
/tags.php - 为了防止动态页面被收录,或者将动态请求 301 重定向到静态页面,你可以修改此文件。
- 方案A:直接跳转(推荐)
在文件开头
require_once(dirname(__FILE__)."/include/common.inc.php");之后,添加以下代码:if (!empty($_GET['tag'])) { $tag = trim($_GET['tag']); $static_url = $cfg_cmsurl."/tags/".urlencode($tag).".html"; header("HTTP/1.1 301 Moved Permanently"); header("Location: $static_url"); exit(); } - 方案B:直接404
如果你想彻底废弃动态页面,可以直接在文件开头加上
header("HTTP/1.1 404 Not Found"); exit();,让所有访问tags.php的请求都返回 404。
- 路径:
-
重新生成
- 和插件方法一样,进入后台 “生成” -> “更新Tag缓存” 和 “批量更新文档”,重新生成所有相关页面。
第二部分:Tag 标签 SEO 优化策略
静态化只是第一步,要让 Tag 页面真正为 SEO 做出贡献,还需要进行更深度的优化。
URL 结构优化
- 简洁明了:
/tags/关键词.html是最佳实践。 - 包含关键词:URL 中必须包含核心关键词。
- 统一格式:确保全站所有 Tag 页面 URL 格式一致。
Title、Keywords、Description 优化
这是 SEO 的核心,Tag 页面应该自动生成符合该标签特性的 SEO 信息。
- 修改文件:
/include/arc.taglist.class.php - 找到函数:
ParseTempletsFirst(),这是解析模板并填充数据的函数。 - 添加/修改代码:在该函数中,你可以找到
$this->Fields数组,这是传递给模板的变量,我们需要手动为它添加 SEO 标签。
在 ParseTempletsFirst() 函数内,适当位置添加以下代码:
// 为Tag列表页添加SEO信息 $this->Fields['title'] = $this->TagInfos['tagname'] . '_标签页_' . $GLOBALS['cfg_webname']; $this->Fields['keywords'] = $this->TagInfos['tagname']; // 描述可以组合标签名和文章数 $art_count = $this->TotalResult; $this->Fields['description'] = '' . $this->TagInfos['tagname'] . '”的相关文章,共有' . $art_count . '篇,为您精选了最新的' . $this->TagInfos['tagname'] . '相关资讯和知识。';
代码解释:
- Title:格式为
标签名_标签站名,清晰明了。 - Keywords:直接使用标签名作为关键词。
- Description:生成一段描述性文字,包含标签名和该标签下的文章总数,更具吸引力。
模板 (Template) 优化
Tag 页面的模板文件是 /templets/default/taglist.htm,你需要自定义这个模板,使其对 SEO 更友好。
优化建议:
- H1 标签:在页面的显著位置(通常是顶部)使用
<h1>标签包裹当前标签名。<h1>{dede:field.title/}</h1> - 面包屑导航:添加面包屑,告诉用户和搜索引擎他们在网站中的位置。
<div class="breadcrumb"> <a href='{dede:global.cfg_cmsurl/}/'>首页</a> > <a href='/tags/'>标签</a> > {dede:field.title/} </div> - 分页优化:确保分页链接是静态的,DedeCMS 默认在静态化 Tag 后,分页链接已经是静态的(如
/tags/关键词-2.html),无需额外操作。 - 内容摘要:默认情况下,Tag 页会显示文章的全文,为了页面加载速度和避免内容重复,建议只显示文章摘要。
- 在
taglist.htm中找到{dede:list}- 将调用文章内容的部分(如
[field:body/])替换为调用摘要[field:description/],并限制字数。{dede:list pagesize='20'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span class="date">([field:pubdate function="MyDate('Y-m-d',@me)"/])</span> <p>[field:description function="cn_substr(@me,200)"]...</p> </li> {/dede:list} - 将调用文章内容的部分(如
- 在
- nofollow 属性:对于“下一页”等分页链接,可以加上
rel="nofollow",以避免权重分散。<a href='{dede:pagelist listitem='next'/}' rel="nofollow">下一页</a>
内容质量与内链策略
- 内容聚合:Tag 页面的价值在于它是一个特定主题的内容聚合页,确保这个页面有足够多的、高质量的相关文章。
- 内部链接:
- 中,合理地加粗或链接到相关的其他 Tag。
- 在网站的侧边栏、页脚等位置,可以设置一个“热门标签”模块,链接到重要的 Tag 页面,增加这些页面的内链权重。
- 避免重复内容:如果多个 Tag 页面内容高度重合(电脑”和“计算机”),需要考虑合并或规范标签,或在模板中通过逻辑判断来区分。
网站地图 (Sitemap) 包含
确保你的网站地图(无论是 sitemap.xml 还是 sitemap.html)中包含了所有 Tag 页面的链接,这样搜索引擎就能发现并抓取到这些聚合页面。
| 优化项目 | 具体操作 | 目的 |
|---|---|---|
| URL 静态化 | 使用官方插件或手动修改 arc.taglist.class.php 和 taglib/tag.lib.php |
提升用户体验,利于 SEO 收录 |
| SEO 标签优化 | 在 arc.taglist.class.php 的 ParseTempletsFirst() 函数中动态设置 title, keywords, description |
为每个 Tag 页面定制精准的 SEO 信息 |
| 模板优化 | 自定义 taglist.htm,使用 H1、面包屑、内容摘要、优化分页 |
提升页面结构清晰度和加载速度 |
| 网站地图 | 将 Tag 页面 URL 加入 Sitemap | 帮助搜索引擎发现所有聚合页 |
通过以上步骤,你的 DedeCMS Tag 标签系统将从一个简单的功能模块,转变为一个强大的 SEO 工具,能有效提升网站的整体关键词排名和流量。
