作为一名资深的安企CMS网站运营人员,我深知网站导航在用户体验和搜索引擎优化中的关键作用。管理好导航中的外部链接,确保它们按照我们的意愿被搜索引擎处理,是网站运营中不可忽视的一环。
下面我将详细阐述如何在安企CMS中防止导航链接中的外部链接被搜索引擎追踪。
外部链接与搜索引擎追踪的意义
在网站运营中,我们经常需要在导航中添加指向其他网站的链接,例如合作伙伴、相关资源或社交媒体主页。这些外部链接对于提升用户体验、提供额外价值至关重要。然而,从搜索引擎优化的角度来看,过多的外部链接或指向低质量网站的外部链接,可能会分散我们网站的“链接权重”(Link Juice),甚至影响网站的信誉。为了更好地控制这些外部链接对搜索引擎的影响,我们通常会希望阻止搜索引擎追踪某些特定的外部链接。
搜索引擎追踪一个链接主要通过“爬行”和“传递链接权重”两个过程。当我们不希望搜索引擎遵循某个链接或将链接权重传递给目标网站时,可以使用 rel="nofollow" 属性。这个属性告诉搜索引擎爬虫不要将该链接视为网站对目标页面的认可,也不要向目标页面传递PageRank。
安企CMS导航链接的默认行为
安企CMS在设计上对SEO友好,提供了包括伪静态、301重定向、高级SEO工具等功能来帮助网站提升搜索引擎表现。在内容发布方面,安企CMS的“内容设置”中包含了一个名为“是否自动过滤外链”的功能。当此功能启用时,在文章或页面内容中插入的外部链接会自动被添加 rel="nofollow" 属性,有效管理了内容中的链接权重流失。
然而,对于网站导航(通过“网站导航设置”配置的链接),情况略有不同。安企CMS的导航列表标签 (navList) 在模板输出时,其可用的字段中并未直接提供一个用于控制 rel="nofollow" 属性的选项。这意味着,默认情况下,导航中添加的外部链接可能会被搜索引擎追踪并传递链接权重。
鉴于此,我们需要采取一些额外的方法来确保导航中的外部链接也能按照我们的需求进行控制。
策略一:通过模板手动添加 rel="nofollow" 属性
这是最直接且有效的方法,通过修改网站的模板文件,在生成导航链接的 HTML 代码中手动添加 rel="nofollow" 属性。
确定导航模板文件: 安企CMS的模板文件通常位于
/template目录下,并按照一定的约定组织(参考design-convention.md和design-director.md)。导航部分通常在公共代码片段中,例如partial/header.html或直接在index.html中引入。你需要找到使用{% navList navs %}标签来生成导航的那个模板文件。修改模板代码: 找到渲染导航链接的
<a>标签。在tag-navList.md的示例代码中,导航链接的结构大致如下:{% navList navs %} <ul> {%- for item in navs %} <li> <a href="{{ item.Link }}">{{item.Title}}</a> {# 可能还有二级导航 #} {%- if item.NavList %} <dl> {%- for inner in item.NavList %} <dd> <a href="{{ inner.Link }}">{{inner.Title}}</a> </dd> {% endfor %} </dl> {% endif %} </li> {% endfor %} </ul> {% endnavList %}要给所有外部链接添加
rel="nofollow",我们首先需要判断item.Link是否是一个外部链接。我们可以通过检查链接是否以http://或https://开头,并且不属于当前网站的域名来判断。同时,为了安全性和用户体验,建议为外部链接添加target="_blank" rel="noopener noreferrer"属性,确保在新标签页打开,并防止潜在的安全漏洞。可以按照以下方式修改模板代码:
{% navList navs %} <ul> {%- for item in navs %} <li> {# 假设 system.BaseUrl 是当前网站的基础URL #} {% set isExternal = (item.Link | startsWith('http://') or item.Link | startsWith('https://')) and not item.Link | contains(system.BaseUrl) %} <a href="{{ item.Link }}" {% if isExternal %}target="_blank" rel="nofollow noopener noreferrer"{% endif %}> {{item.Title}} </a> {%- if item.NavList %} <dl> {%- for inner in item.NavList %} {% set isExternalInner = (inner.Link | startsWith('http://') or inner.Link | startsWith('https://')) and not inner.Link | contains(system.BaseUrl) %} <dd> <a href="{{ inner.Link }}" {% if isExternalInner %}target="_blank" rel="nofollow noopener noreferrer"{% endif %}> {{inner.Title}} </a> </dd> {% endfor %} </dl> {% endif %} </li> {% endfor %} </ul> {% endnavList %}注意:这里的
startsWith和contains是模板过滤器的一种假设,你需要根据实际的安企CMS模板引擎支持的过滤器来调整。如果不支持,可能需要更复杂的逻辑或后台支持。一个更通用的判断方式是,如果链接包含http://或https://且不包含你网站的域名,则视为外部链接。利用“导航描述”字段进行选择性控制(推荐实践): 如果你只想对导航中的部分外部链接添加
rel="nofollow",而不是全部,可以通过巧妙利用安企CMS“网站导航设置”中的“导航描述”字段。- 后台操作: 在“后台设置” -> “网站导航设置”中,编辑你想要添加
nofollow的导航链接。在“导航描述”字段中,输入一个特定的关键词,例如nofollow。 - 模板修改: 在模板文件中,修改
<a>标签的代码,增加一个条件判断,检查item.Description是否包含你设置的关键词。
{% navList navs %} <ul> {%- for item in navs %} {% set isNofollow = item.Description | contains('nofollow') %} {# 检查描述是否包含 'nofollow' #} {% set isExternal = (item.Link | startsWith('http://') or item.Link | startsWith('https://')) and not item.Link | contains(system.BaseUrl) %} <li> <a href="{{ item.Link }}" {% if isExternal %}target="_blank" rel="noopener noreferrer"{% endif %} {% if isNofollow %}rel="nofollow"{% endif %}> {# 如果描述中包含 nofollow,则添加 #} {{item.Title}} </a> {# 处理二级导航,逻辑类似 #} </li> {% endfor %} </ul> {% endnavList %}这种方式更加灵活,允许你根据具体链接的需求来决定是否添加
nofollow。- 后台操作: 在“后台设置” -> “网站导航设置”中,编辑你想要添加
策略二:利用 Robots.txt (有限的适用场景)
安企CMS提供了高级SEO工具,其中包含对 Robots.txt 的配置支持(参考 help-plugin-rewrite.md)。Robots.txt 文件是网站根目录下的一个文本文件,用于指示搜索引擎爬虫哪些页面可以抓取,哪些页面不可以抓取。
然而,需要明确的是,Robots.txt 主要用于控制搜索引擎爬虫对你 自己网站内部 页面或目录的访问。它不能直接控制外部链接的追踪行为。如果你在导航中放置了一个外部链接,Robots.txt 无法阻止搜索引擎追踪这个链接。
因此,Robots.txt 不是阻止导航外部链接被追踪的有效方法。 它的作用在于指示搜索引擎不要抓取你网站上某些敏感或不重要的内部内容(例如后台管理路径、搜索结果页等)。
策略三:考虑未来的功能增强
作为一名运营人员,我深知便捷性对于日常管理的重要性。尽管目前可以通过模板修改和利用现有字段实现 nofollow