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的部署使用方法

discuzQ_seo_app也是一个基于laravel的应用,使用的laravel版本依赖于PHP 7.3或以上。部署使用有这几个步骤:

  1. 下载代码出来:git clone https://github.com/Jamesweng/discuzQ_seo_app.git
  2. 把代码目录下的.env.example文件改名为.env,并更新里面的配置为你的Discuz! Q站,其中DISCUZQ_URL为你的站点的访问地址,LOGO_URL为一个正方形的logo,APP_NAME为网站名字,META_DESCRIPTION为网站描述,META_KEYWORDS为网站关键词。
  3. 运行 "php artisan key:generate" 生成laravel的APP_KEY。
  4. 运行"nohup ./dev_start.sh &" 后台运行laravel的开发模式,成功后本地使用http://127.0.0.1:8000 可以访问到面向搜索引擎版本的Discuz! Q。(你也可以按照laravel的php配置,使用nginx+php-fpm来运行discuzQ_seo_app服务)
  5. 配置前端的nginx,根据user-agent,将搜索引擎的流量转发到discuzQ_seo_app服务。比如我的站点的配置如下,检测到是搜索引擎的user agent则返回8000端口的discuzQ_seo_app服务,否则返回81端口的Discuz! Q服务:
  6. location /sitemap.xml {try_files $uri $uri/;
    }
    location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;if ($http_user_agent ~* "Baiduspider|Bytespider|JikeSpider|YisouSpider|Googlebot|spider|Spider|bingbot|Sitemaps") {proxy_pass http://127.0.0.1:8000$request_uri;break;}proxy_pass http://127.0.0.1:81$request_uri;
    }

其他方式运行

我在github上也放置了这个服务的Dockerfile,你可以使用docker_build.sh脚本来构建一个docker镜像,然后使用docker_start.sh脚本来启动服务。docker镜像中包含了服务运行需要的nginx+php-fpm依赖,对外以81端口服务。事实上我在线上也是采用的这种方式,discuzQ_seo_app和discuz! Q为两个独立的docker容器互不影响,前端由nginx转发流量。

让搜索引擎更快的索引

你可以制作sitemap.xml网站索引文件,并通过站长工具(比如Bing的站长管理工具,其他搜索引擎类似都有提供)提交给搜索引擎,使得搜索引擎更快的抓取你的页面。比如我的sitemap.xml文件:https://m.mahjong.chat/sitemap.xml 网上有很多sitemap文件的生成工具,比如:https://www.xml-sitemaps.com/ 。(后续版本discuzQ_seo_app也可以直接支持sitemap.xml生成)

你也可以通过在每个页面嵌入搜索引擎提供的js脚本的方式,在页面被用户访问时自动将页面推送给搜索引擎索引。将脚本放在Discuz! Q后台的"第三方统计"脚本里即可,脚本的获取可以在各家搜索引擎的站长管理后台中获取。

如果你在使用的过程中有什么问题或者有更好的想法,欢迎加我微信交流:6080901。

最后:欢迎与本站(小番麻友圈)交换友链哦。

Discuz! Q的搜索引擎优化(SEO)攻略相关推荐

  1. 搜索引擎优化 SEO攻略大全

    域名注册 恶意关键字(Keywords Spamming):这里不是指垃圾邮件(Email Spamming), 如果在您的网页内容上或在META标记中多次重复堆放某个关键字,这就叫做恶意关键字(Ke ...

  2. 搜索引擎优化SEO全攻略

    搜索引擎优化SEO全攻略 http://www.lelew.com/ 成功的搜索引擎营销策略应该是在网站建设之初开始的,从域名的选择到网页的源代码书写开始.但目前的现状是多数网站建设的分工和流程都是把 ...

  3. DedeCms的SEO优化全攻略

    DedeCms的SEO优化全攻略 这是一篇从DEDECMS标签入手谈SEO优化的文章,操作才需要了解DEDECMS标签的作用和规则进行修改,建议修改前先进行备份操作. 保密资料,请勿转载. 网站管理系 ...

  4. MySQL与优化有关的命令_MySQL优化全攻略-相关数据库命令

    MySQL优化全攻略-相关数据库命令 更新时间:2006年11月25日 00:00:00   作者: 接下来我们要讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化. ▲ ...

  5. 转载--让搜索引擎优化(SEO)更有效 CSS+DIV标签命名规范

    转载--让搜索引擎优化(SEO)更有效 CSS+DIV标签命名规范 让搜索引擎优化(SEO)更有效 CSS+DIV标签命名规范 搜索引擎优化(seo)有很多工作要做,其中对代码的优化是一个很关键的步骤 ...

  6. 网站搜索引擎优化SEO策略及相关工具资源

    网站搜索引擎优化SEO策略及相关工具资源 网站优化的十大奇招妙技 1. 选择有效的关键字: 关键字是描述你的产品及服务的词语,选择适当的关键字是建立一个高排名网站的第一步.选择关键字的一个重要的技巧是 ...

  7. 【VUE】前端搜索引擎优化seo

    标题前端搜索引擎优化 SEO 1. 创建唯一且准确的网页标题title 告诉用户和搜索引擎特定网页的主题是什么,它应放置在 HTML 文档的 元素中.应该为网站上的每个网页创建一个唯一标题,并且尽量避 ...

  8. 单个网页的搜索引擎优化(SEO)策略

    单个网页的搜索引擎优化(SEO)策略 搜索引擎(search engine)是指根据一定的策略.运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信 ...

  9. [精品教程,新老鸟必读]:极限装机、优化全攻略(新手优化教程)

    [精品教程,新老鸟必读]:极限装机.优化全攻略(新手优化教程)         对于一些新手们来说,如何装机和对电脑进行优化是一件头疼的事.现在网站上也有很多相关的教程,但基本上都是以理论为主,经常把 ...

最新文章

  1. WebApi2官网学习记录---异常处理
  2. linux命令scp
  3. inotify监听文件夹的变动
  4. sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示
  5. PAT乙级资料集-2022.04.06
  6. 策略设计模式_设计模式之策略模式总结
  7. Linux_shell 学习
  8. android 远程同步,在Android上同步SQL数据库与REST远程服务器的最佳实践
  9. C++ GUI Qt4 自学笔记
  10. gradle下载很慢
  11. 2016/2/19:ApplePay
  12. 动手学TCP——CS144实验感想
  13. oracle常用函数汇总(1)
  14. java 量化指标_SAR指标配合阶段高低价的量化交易策略
  15. java语言实现菜单代码_java微信开发API微信自定义个性化菜单实现实例代码
  16. python webpy启动服务
  17. echarts柱状图实现正负值不同颜色在上方显示数值
  18. 把Excel里的url链接转换为图片显示
  19. 闭关修炼——one——struts2
  20. UTNet 用于医学图像分割的混合Transformer

热门文章

  1. 044-Web前端-JS-键盘事件
  2. 算法 博弈论( 初级Nim游戏)
  3. HTTP Request Method共计15种
  4. 过于执着其实没有什么好下场--《科学怪人之再生情缘》
  5. 英文中的一些常见缩写
  6. 基于安卓的公司员工考勤系统的设计与实现
  7. spring-data-redis 连接泄漏,我 TM 人傻了
  8. 家用智能洗地机哪个牌子好、这几款旗舰机好用又实惠
  9. 制造业ERP系统是什么?制造业ERP软件系统有哪些功能
  10. python在屏幕上画画_想学画画?python满足你!