谈DedeCMS的TAG标签SEO问题及改进

DedeCMS应该算是目前最优秀的中文开源CMS系统之一,我自己也一直比较喜欢使用这个系统。它最大的优点首先是模板化做得比较好,稍微熟悉一下就能够很快掌握;其次是功能比较强大,一般以资讯内容为主的网站需要的功能,它基本上都已经集成了,除了普通的资讯网站以外,用DedeCMS搭建B2B网站,甚至一些比较简单的电商网站也没有太大问题。另外,DedeCMS采用PHP开发,配合MySQL和Apache,这套建站环境全部都是开源免费的,不仅成本低,而且PHP本身也比较容易上手,因此一直很受中小站长欢迎。

不过,DedeCMS当然也不是尽善尽美。除了大家经常提到的安全问题以外,系统里面还有不少细节值得改进。最近我们在使用DedeCMS的时候,就发现它的TAG标签在相关文章匹配机制上存在一个问题。这个问题平时不太容易被注意到,但是对于比较重视SEO和内部链接的网站来说,我认为还是值得研究一下。

DedeCMS的TAG匹配机制有什么问题

假设一篇文章添加了A、B、C三个TAG,我认为比较合理的处理方式,应该按照我们添加TAG的先后顺序,从A到C依次匹配相关文章。这样一来,我们就可以有意识地控制TAG的顺序。例如,把与当前文章内容最贴近的长尾关键词放在A的位置,把范围比较大的热门关键词放在C的位置。系统首先利用A标签寻找与当前文章高度相关的内容,如果数量不足,再使用B,最后才使用比较宽泛的C标签进行补充。这样既能够保证相关文章具有比较高的相关性,又能够充分利用系统设置的相关文章数量。

但DedeCMS源代码并不是按照这个思路处理的。如果一篇文章添加了A、B、C三个TAG,系统会首先到数据库里检查这三个TAG是否已经存在。如果存在,就调出原来的ID;如果不存在,则为这个TAG生成一个新的ID。到了匹配相关文章的时候,程序并不理会我们给文章添加A、B、C的先后顺序,而是按照这些TAG的ID从小到大依次进行匹配。

这个设计从程序角度看可能没有什么大问题,但从SEO和内容相关性的角度来看,就会产生一个比较明显的问题。

热门TAG反而抢在了长尾TAG前面

一般来说,一个网站里比较热门的关键词往往很早就已经被使用,因此它们进入数据库的时间比较早,获得的ID也比较小。与某一篇文章高度相关的长尾关键词则正好相反,因为以前可能从来没有使用过,所以在发布这篇文章的时候才第一次被加入数据库,得到的是一个新的ID,这个ID通常会比较大。

这样一来,DedeCMS在调用相关文章的时候,就很可能首先拿一个范围很大的热门TAG去匹配,而不是使用我们特意为这篇文章设置的精准长尾TAG。由于热门TAG下面本来就已经有很多文章,系统往往很快就能够凑够“相关文章”所需要的数量,后面那些真正与当前文章高度相关的长尾TAG甚至根本没有机会参与匹配。最终的结果就是:页面上确实显示出了足够数量的相关文章,但这些文章与当前文章的相关性却并不高。

从普通用户的角度来看,这会影响相关文章模块的阅读价值;从SEO角度来看,我认为也浪费了TAG本来应该发挥的作用。我们给文章增加TAG,本来就是希望通过TAG建立更加准确的内容关联。如果程序最后还是优先按照那些宽泛的热门词去寻找文章,那么TAG越做越多,相关文章却未必越来越准确。

我的解决办法

这个问题其实不是TAG功能本身的问题,而是TAG匹配顺序的问题。因此解决思路也比较简单:修改DedeCMS相关源代码,让程序在匹配相关文章的时候,不再按照TAG在数据库中的ID大小决定先后顺序,而是尊重我们给文章设置TAG时的排列顺序。

这样,我们在编辑文章的时候就可以主动控制匹配逻辑:把与文章最相关、最精准的长尾TAG放在前面,把范围比较大的热门TAG放在后面。程序先使用精准TAG匹配相关文章,数量不足时再逐步扩大范围。这样既能够保证相关文章的数量,也能够尽可能提高相关文章与当前页面之间的相关性。

我们自己的程序员已经通过修改DedeCMS源代码解决了这个问题。对于一个普通网站来说,这可能只是一个很小的程序细节,但是SEO做得时间长了以后,我越来越觉得,很多站内优化恰恰就是由这些小细节组成的。CMS系统提供的是一套通用功能,而真正应用到自己的网站时,还是应该根据网站的内容结构和SEO需求进行调整,而不是系统默认怎么做,我们就永远怎么用。

原创文章,作者:Xingtian,如若转载,请注明出处:https://xingtian.club/how-to-solve-dedecms-tag-seo-issues/

(0)
XingtianXingtian
上一篇 1天前
下一篇 22小时前