All Posts

Discuz! Q的搜索引擎优化(SEO)攻略

Discuz! Q目前版本对搜索引擎的内容索引还不是很好,前后端分离的单页程序在没有针对搜索引擎优化时(可行的优化包括服务端渲染或静态化),搜索引擎目前只能抓取到一个默认的前端模版,所以你会看到你的页面被搜索引擎索引后显示的是 “## Build Setup” 这样的默认index前端模版上的description meta标签里内容。 为了让搜索引擎能覆盖更多的小番麻友圈的内容,从而给站点带来精准的搜索流量,我尝试对Discuz! Q做了一些搜索引擎优化(主要是内容索引覆盖方面),这里介绍一下。 我们先来看看做了优化后在各个搜索引擎索引的效果: 微软Bing搜索: Google搜索: 百度搜索: 原文首发于小番麻友圈。 我们可以看到,在做了优化后,一方面搜索引擎可以更准确的描述每个页面的内容(标题,描述),另一方面网站可被索引的页面也大大增加了。目前优化刚刚上线几天,微软Bing搜索和Google的爬虫很快就爬到了大部分页面,而百度的爬虫更新则比较慢只更新了一部分(当然更新速度也跟站点的权重有关,更新:两周后索引有较大增加),但也可以看到首页的索引已经被更新为我们希望的标题和描述不再是## Build Setup了。 下面介绍一下优化的方法。由于Discuz! Q目前还没有开源,为了避免后续版本更新带来的合并代码的困难,我这次的优化没有直接在Discuz! Q上改,而是单独做成了一个discuzQ_seo_app。我把代码放在github上开源出来,如果你有同样的需求也可以使用:https://github.com/Jamesweng/discuzQ_seo_app 优化这块我的思路 这是一项针对搜索引擎的优化,并非面向终端用户的功能。代码方面能够尽量分离避免太大的耦合,可以减少后续两方面(面向搜索引擎/面向用户)的维护成本。所以在实现上我采用了API对接的方式。discuzQ_seo_app这个面向搜索引擎的程序,只依赖于Discuz! Q的列表/详情等几个数据API接口,自行后端渲染出适合搜索引擎阅读的页面。在顶层流量分发方面,从nginx里分出搜索引擎的流量(识别user-agent),将搜索引擎的流量导向discuzQ_seo_app,而正常的用户流量导向Discuz! Q服务。 discuzQ_seo_app的部署使用方法