织梦默认的Tag标签是动态链接(/tags.php?/关键词/),这不利于SEO,将其修改为静态链接(/tags/关键词.html)是提升网站SEO优化的一个重要步骤。

重要提示:安全第一,务必备份!
在进行任何文件修改之前,请务必备份您的整个网站,特别是 include、templets 目录和数据库,以防修改出错导致网站无法访问。
使用现成的静态化插件(推荐新手)
这是最简单、最安全的方法,通过安装一个现成的插件来完成所有修改。
推荐插件:DedeCMS Tag静态化插件
网上有很多类似的插件,核心功能都是修改模板标签和生成规则,这里以一个常见的版本为例,说明操作步骤。
插件下载:

由于插件链接可能会失效,建议您在搜索引擎中搜索 “织梦DedeCMS 5.7 tag静态化插件” 来寻找最新的下载资源,通常这些插件会打包成一个 .zip 文件。
安装步骤:
- 下载并解压:将下载的插件包解压。
- 上传文件:
- 将
tag目录(包含index.php和list.php)上传到您的网站根目录。 - 将
include/taglib/tag.lib.php文件覆盖到您网站根目录下的include/taglib/tag.lib.php。 - 将
dede/MakeHtml_tags.php文件覆盖到您网站根目录下的dede/MakeHtml_tags.php。 - 将
dede/templets/MakeHtml_tags.htm模板文件覆盖到相应目录。
- 将
- 修改后台设置:
- 登录织梦后台,进入【系统】->【系统基本参数】->【核心设置】。
- 找到 “文档HTML命名规则” 这一项,将其修改为:
{typedir}/{Y}/{M}/{D}/{aid}.html(这是文章页的规则,保持不变)。 - 找到 “栏目列表命名规则”,修改为:
{typedir}/index_{page}.html。 - 关键一步:找到并添加一项 “Tag列表命名规则”,如果后台没有这个选项,可能需要手动在数据库中添加,或者插件会自动处理,如果插件提供了说明,请按说明操作,通常规则是:
tags/{tagname}/index_{page}.html。
- 修改模板文件:
- 打开您首页、列表页、文章页等所有需要显示Tag标签的模板文件。
- 找到调用Tag的代码,通常是:
{dede:tag row='10' getall='0'} <a href='[field:link/]'>[field:tagname/]</a> {/dede:tag} - 将其修改为插件要求的格式,通常是:
{dede:tag sort='hot' row='10'} <a href='[field:link/]'>[field:tagname/]</a> {/dede:tag}sort='hot'表示按热门排序,你也可以用sort='new'按最新排序。getall='0'这个参数在新版本中可能已不需要,插件通常会处理链接的生成。
- 更新Tag并生成HTML:
- 进入【频道管理】->【TAG标签管理】。
- 点击 “更新TAG标签”,让系统重新整理所有Tag。
- 点击 “更新TAG主页”,生成Tag的首页(通常是
/tags/index.html)。 - 点击 “更新TAG列表页”,生成所有Tag的静态列表页。这一步可能会比较耗时,请耐心等待。
完成以上步骤后,您的Tag标签就会变成静态链接了。
手动修改代码(推荐有一定基础的用户)
如果您不想使用插件,或者找不到合适的插件,可以手动修改核心文件来实现,这种方法更灵活,但风险稍高。
第一步:修改标签库文件 (include/taglib/tag.lib.php)
- 用编辑器打开
/include/taglib/tag.lib.php文件。 - 找到大约在第
65-75行的function lib_tag(&$ctag, $refObj)函数。 - 在这个函数内部,找到生成链接的代码行,类似这样:
$link = $GLOBALS['cfg_phpurl']."/tags.php?/".urlencode($row['tagname'])."/";
- 将其修改为:
// 定义tag静态目录,确保你的网站根目录下有这个目录且有写入权限 $tag_dir = $GLOBALS['cfg_cmspath'].'/tags'; // 创建目录 if(!is_dir($tag_dir)) { mkdir($tag_dir, 0777); } // 生成静态链接 $link = $GLOBALS['cfg_cmsurl']."/tags/".urlencode($row['tagname']).".html";- 这段代码会生成
/tags/关键词.html格式的链接。 cfg_cmsurl是你的网站网址,cfg_cmspath是网站在服务器上的路径。
- 这段代码会生成
第二步:创建Tag列表页模板 (tags.php)
-
在您的网站根目录下新建一个名为
tags.php的文件。 -
将
tags.php的内容修改为以下代码(这是处理Tag列表页的PHP逻辑):<?php require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.taglist.class.php"; $PageNo = 1; if(isset($_GET['PageNo'])) { $PageNo = intval($_GET['PageNo']); } $typeid = 0; if(!empty($_GET['typeid'])) { $typeid = intval($_GET['typeid']); } $tag = FilterSearch(urldecode(trim($_GET['tag']))); // 检查tag是否存在 $row = $dsql->GetOne("SELECT * FROM `dede_tagindex` WHERE tag like '{$tag}' "); if(!is_array($row)){ ShowMsg('您指定的标签不存在!', '-1', 0, 10); exit(); } $typeid = isset($typeid) && is_numeric($typeid) ? $typeid : 0; $tl = new TagList($tag, $typeid); $tl->GetTagList(); // 获取分页 $pagelist = $tl->GetPageList(); // 获取列表内容 $list = $tl->GetList(); // 加载模板 $tplfile = DEDETEMPLATE.'/taglist.htm'; // 确保这个模板文件存在 if(!file_exists($tplfile)){ echo "模板文件不存在:".$tplfile; exit(); } // 设置模板变量 $dtp = new DedeTemplate(); $dtp->LoadTemplate($tplfile); $dtp->Display(); ?>
第三步:创建Tag列表页模板 (taglist.htm)
-
在您的模板目录(
/templets/)下新建一个名为taglist.htm的文件。 -
在这个文件中,编写Tag列表页的HTML代码,并使用织梦的标签来调用内容。
<!DOCTYPE html> <html> <head> <meta charset="utf-8">{dede:tagname/} - {dede:global.cfg_webname/}</title> <meta name="keywords" content="{dede:tagname/}"> <meta name="description" content="dede:tagname/}的相关文章列表"> </head> <body> <h1>标签:{dede:tagname/}</h1> <div class="list"> {dedarclist titlelen='42' row='10'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dedarclist} </div> <div class="page"> {pagelist listitem='pre,next,end,option' listsize='5'/} </div> </body> </html>{dede:tagname/}会显示当前Tag的名称。{dedarclist}用于调用包含该Tag的文章列表。
第四步:修改后台设置和生成页面
- 后台设置:进入【系统】->【系统基本参数】->【核心设置】。
- “Tag列表命名规则”:如果后台有这个选项,设置为
tags/{tagname}/index_{page}.html,如果没有,可以忽略,因为我们用的是tags.php直接处理。
- “Tag列表命名规则”:如果后台有这个选项,设置为
- 生成页面:
- 进入【频道管理】->【TAG标签管理】。
- 点击 “更新TAG标签”。
- 手动访问:现在您可以手动访问
http://您的域名/tags/关键词.html来测试是否能正常显示页面,如果显示正常,说明逻辑是通的。 - 批量生成:织梦后台没有直接为所有Tag生成静态页面的功能,您需要自己写一个脚本循环遍历所有Tag,然后调用生成页面的API,或者使用第三方工具来完成批量生成,对于网站初期Tag不多的情况,手动点击生成即可。
总结与建议
| 方法 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
| 插件法 | 简单快捷,一键安装,不易出错。 | 可能存在兼容性问题,插件作者不再维护时风险高。 | 新手,追求效率的用户。 |
| 手动法 | 灵活可控,不依赖第三方,代码更轻量。 | 风险较高,需要修改核心文件,需要一定的PHP和织梦知识。 | 有一定开发基础,希望深度定制的用户。 |
给您的建议:
-
优先尝试插件法:这是最稳妥、最简单的方式,先找一个评价好的插件安装测试。
-
如果插件不合适,再考虑手动法:手动法虽然麻烦,但能让你更深刻地理解织梦的Tag机制。
-
检查目录权限:无论是哪种方法,确保你的网站根目录下的
tags目录(或你自定义的目录)有写入和执行权限,否则无法生成静态文件。 -
URL重定向(重要):为了SEO,当用户访问旧的动态URL (
/tags.php?/关键词/) 时,应该自动跳转到新的静态URL (/tags/关键词.html),这可以通过在网站根目录的.htaccess文件中添加以下Apache规则来实现:RewriteEngine On # 将旧的tag动态链接重定向到新的静态链接 RewriteRule ^tags\.php\?\/(.*)$ /tags/$1.html [R=301,L]
希望这个详细的指南能帮助您成功实现织梦DedeCMS 5.7的Tag标签静态化!
