SEO对于一个网站来说是尤其重要的,这个道理我想不管大网站还是小网站都是懂的,除非是BAT级别的网站或者某些不依赖搜索引擎的网站,在目前这种网站极其少。说实话,很多小网站的运营者花的时间最多的就是花在SEO上面了,可见大家对SEO的重视。但实际上很多运营者做SEO,更多的时间花在网站的标签是否有问题?外链发的是否已经足够了?要是TDK信息出现了差错,哪怕是工具问题带来的差错都是不可以容忍的。而昨天就有人发给我一条这样的信息:
这是什么意思呢?意思就是说他的这个网站的描述和关键词部分的内容都变了,变成了“首页”,首先想到的就是说网站是不是被攻击了之类的。因为他说这是帮他做SEO外包的人反馈的,要他检查网站。如果去网站查看前端源代码就是下面的样子。
看上图确实是有问题的,但难道真的是网站被篡改了么?如果是篡改了这个攻击者也是闲着蛋疼,啥事不做,就把你的keywords和description该成一个“首页”。其实这个问题被很多实用Discuz的站长问过。如果说Discuz是对的的话,那么出现这样的问题就根本不算是问题。
好了,下面就来简单分析下吧。首先访问的是门户的首页,脚本名为portal.php,mod为index,下面就没有其他的路由参数了。我们可以直接找到对应的module。位于source/module/portal下的portal_index.php。里面几乎没什么代码,代码就是判断TDK信息以及模板输出的。
上面关于TDK的意思,大概就是先获取整个的seo设置信息,这些数据通过get_seosetting方法获取,完了如果对应的变量为空则分别赋值为$_G['setting']['navs'][1]['navname'],而这个值正好就是后台设置的导航名称,所以有的时候出现的是“首页”,有的时候出现的是“门户”。
而这个get_seosetting方法位于function_core.php中,但是看到这文件中的方法就知道,这里只是一个“中转站”。
但上面告诉了我们,“真正”的get_seosetting方法包含在helper_seo这个类当中,那么我们就找到helper_seo这个类吧。看类命名就可以迅速找到文件所在路径(这体现了命名规范的重要性)。就在source/class/helper下的helper_seo.php这个文件中,找到对应方法。
看到这里就真相大白了,也就是说你看到的和搜索引擎看到的是不一样的,实际上IS_ROBOT就代表搜索引擎,而$_G['adminid'] == 1就代表管理员管理组啦,这也是为什么有的人提问说登录后就能看到正常的TDK信息了。所以说,这是Discuz本身就是这样写的程序,当然了,最粗暴的方式就是把这个两个if的&&后面的约束条件删除掉就可以了。
最后,我想说的是,做SEO不是借助几个工具查查就叫做分析,比如上面的工具是不可靠的,最基本的它作为SEO工具应该模拟搜索引擎去访问抓取网站,而不是模拟一个普通访客。