直接修改模板文件(最推荐、最灵活)
这是最直接、最常用的方法,适用于所有织梦版本,通过修改导航栏的模板文件,直接在 <a> 标签中添加 rel="nofollow" 属性。

操作步骤:
-
找到导航模板文件 织梦的导航栏通常由一个核心模板文件控制,这个文件通常位于你的模板目录下,路径为:
/templets/你的模板名/或/templets/default/在这个目录下,寻找名为
nav_default.htm或channelnav.htm的文件。nav_default.htm是最常见、最标准的导航模板文件名。 -
编辑模板文件 使用FTP工具或你的主机控制面板中的文件管理器,找到并下载
nav_default.htm文件,然后用代码编辑器(如 VS Code, Sublime Text, Notepad++)打开它。
(图片来源网络,侵删) -
定位并修改循环代码 在文件中,你会找到一个循环输出栏目的代码块,通常是这样的结构:
{dede:channel type='top' row='8'} <li><a href='{dede:field.typeurl/}' target="_blank">{dede:field.name/}</a></li> {/dede:channel}我们的目标就是修改
<a> -
添加
nofollow属性 你有两种添加方式,推荐使用 CSS 类选择器 的方式,因为它更灵活,方便后续通过CSS控制样式。-
方式A:直接添加 rel 属性
{dede:channel type='top' row='8'} <li><a href='{dede:field.typeurl/}' rel="nofollow" target="_blank">{dede:field.name/}</a></li> {/dede:channel}这种方法会把所有顶级导航都加上
nofollow,通常不是我们想要的。
(图片来源网络,侵删) -
方式B:使用
if条件判断,为特定栏目添加(推荐) 这是最灵活的方法,你可以只给指定的栏目(如“关于我们”)添加nofollow,织梦的标签支持if判断。{dede:channel type='top' row='8'} <li> <a href='{dede:field.typeurl/}' <!-- 使用 if 条件判断,如果栏目ID是1,则添加nofollow --> [field:id runphp='yes']if(@me == '1')@me=' rel="nofollow"';else @me='';[/field:id] target="_blank"> {dede:field.name/} </a> </li> {/dede:channel}代码解释:
[field:id runphp='yes']...[/field:id]:这是一个在循环中获取当前栏目ID并执行PHP代码的写法。if(@me == '1'):判断当前栏目的ID(@me变量代表当前字段的值)是否为1。请将'1'替换为你想要添加nofollow的那个栏目的实际ID。@me=' rel="nofollow"';:如果条件成立(ID匹配),就给@me赋值rel="nofollow",这个值会插入到a标签中。else @me='';:如果不成立,就赋一个空值,不添加任何属性。
-
-
上传并更新缓存 保存修改后的
nav_default.htm文件,通过FTP上传回原来的位置,然后登录织梦后台,点击 “生成” -> “更新主页HTML” 或 “更新栏目HTML”,让修改生效。
通过修改织PHP源码(一劳永逸,但需谨慎)
如果你希望所有通过 {dede:channel} 标签生成的链接都默认带 nofollow,可以修改织梦的源码文件。注意:升级织梦版本后,此修改可能会被覆盖。
操作步骤:
-
找到源码文件 这个文件位于织梦程序的根目录下,路径是:
/include/taglib/channel.lib.php -
编辑源码文件 用代码编辑器打开
channel.lib.php文件。 -
定位并修改代码 搜索
return $linkType;这行代码,通常在文件的最后部分,在这行代码之前,找到生成<a>标签的代码,它看起来像这样:$linkstr = "<a href='".$typeurl."'".$target.">".$typename."</a>";
将其修改为:
$linkstr = "<a href='".$typeurl."'".$target." rel='nofollow'>".$typename."</a>";
这样,所有使用
{dede:channel}标签生成的链接都会被加上rel="nofollow"。 -
更新缓存 同样,修改后需要在后台更新缓存或重新生成页面才能看到效果。
使用JS动态添加(前端实现,不影响后端)
这种方法不修改织梦的任何文件,而是通过在前端页面加载一段JavaScript代码,来动态地为指定的导航链接添加 nofollow 属性。
操作步骤:
-
在模板中添加JS代码 在你的网站首页模板文件(通常是
/templets/你的模板名/index.htm)的<head>标签内或页面底部</body>标签前,添加如下JS代码:<script> document.addEventListener('DOMContentLoaded', function() { // 获取所有导航链接 const navLinks = document.querySelectorAll('.nav a'); // 假设你的导航菜单有 class="nav" // 定义你想要添加nofollow的栏目名称 const nofollowNames = ['关于我们', '联系我们', '版权声明', '网站地图']; navLinks.forEach(link => { const linkText = link.textContent.trim(); // 如果链接文本在 nofollowNames 列表中,则添加 rel="nofollow" if (nofollowNames.includes(linkText)) { link.setAttribute('rel', 'nofollow'); } }); }); </script>代码解释:
document.querySelectorAll('.nav a'):选择所有类名为nav的容器下的<a>标签。请根据你网站的实际HTML结构修改选择器(如#mainnav a)。nofollowNames = [...]:在这个数组中填入你想要添加nofollow的导航栏目的文字,而不是ID。link.setAttribute('rel', 'nofollow'):为匹配的链接添加rel="nofollow"属性。
-
保存并更新 保存模板文件,并在后台重新生成首页即可。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 修改模板 | 最推荐,灵活、直观、只影响特定栏目,升级不受影响。 | 需要手动操作,模板文件路径可能因模板不同而异。 | 绝大多数情况,特别是只需要给少数几个栏目加 nofollow 时。 |
| 修改源码 | 一劳永逸,对所有 {dede:channel} 生效。 |
有风险,升级后会被覆盖,影响所有栏目,不够灵活。 | 确定所有栏目都需要 nofollow,且不打算升级织梦版本。 |
| JS动态添加 | 不修改后端文件,方便测试和移除。 | 依赖JS,如果用户禁用JS则无效,可能对SEO有轻微延迟。 | 快速测试,或者不希望修改任何后端文件时。 |
对于99%方法一(修改模板文件) 是最佳选择,它既安全又灵活,完全能满足SEO优化的需求。
