现在对于网站在搜索引擎上的表现开始多的关注起来,经常有事没事就查网站的收录,网站在seo上也开始暴露出来一些问题,其中就发现了一个问题:搜索引擎收录内容重复的页面,这一点在谷歌搜索上比较明显。

在观察了几个网站的收录情况后,我发现谷歌搜索对于页面收录的要求相较于百度搜索会低一点,也就是更加容易收录。对于一些不必要收录的页面,谷歌会收录。有关注过wordpress站点收录情况的小伙伴应该会发现,一些无意义的图片页谷歌会收录。而对于网站未对seo优化且url仅多出查询字符串部分的重复页面谷歌也同样会收录。

举个博客之前出现过的例子:
一个文章页面
http://www.felixlee.cn/post/18
与文章页点击回复某条评论后的页面
http://www.felixlee.cn/post/18?reply=10#comments

这两个链接中其实只要收录上面那个就好了,而有时候搜索引擎却会收录两个,且不说重复页面对页面权重分散的影响,在用户通过搜索引擎进入带有回复目标查询字符串和位置定位符的url的页面后,若在评论时未发现正在评论的内容是在回复某人时,就可能造成不必要的误解和麻烦。

canonical

告诉搜索引擎哪个页面才是最重要的是非常必要的,所以就引出这篇文章的重点“canonical”,有了canonical属性之后我们就可以告诉搜索引擎,到底哪一个页面才是最重要的那个,写法如下:

<link rel="canonical" href="http://www.felixlee.cn/post/18" />

而对于flask网站来说,由flaskrequest提供的base_url属性就能非常简单地解决这个问题,它会删除查询字符串部分、位置标识符部分,只保留最基本的url部分,在flask中模板可以直接调用request对象,所以就不用在渲染模板的函数中传入参数,直接在模板中调用就可以了。

<link rel="canonical" href="{{ request.base_url }}" />

request是通过客户端的请求头构建的,如果你使用了nginx作为反向代理的话,就需要在nginx的配置文件上加上下面这一段用来传递客户端的请求头部,否则base_url中的域名就会显示为项目的实际监听ip地址。

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;

这些就是我关于canonical的一些分享与实际flask项目的实现啦,这个问题在谷歌比较明显,在百度这种情况比较少见,在添加这个属性之后,谷歌那边还是很快就更新搜索结果了。还有一点建议就是可以在无需收录的入口链接上添加nofollow的属性,比如在回复的按钮上添加nofollow属性。以上就是我对于seo的一些浅显的认识,如果您发现了什么问题或者有什么建议欢迎在评论区留言,我们可以交流一下。

评论

  • 最新随笔

  • 对我来说,写东西很好的一点是,自己写的东西,后面基本都会再看,一遍或者很多遍。这样就可以很好地发现自己之前的漏洞,并看看现在有什么变化。
  • 前段时间应该是百度更新了页面结构,那个黑帽泛目录网站我也没有去更新代码,就导致了文章页没有相关推荐,没想到这时候谷歌开始收录了,而且效果还不错。其实之前在谷歌一直不收录的时候就有怀疑过没有尽头的相关推荐很可能是导致不收录的原因,不过也一直没有去管它,而这次误打误撞的收录也恰恰证实了这个想法。(btw,其实这个网站从出现固定链接开始叫泛目录应该不太准确)
  • 最近吉他谱网站iloveguitar上线了,这几天在填充一些内容花了一些时间,这个网站也是使用flask作为后端框架的,前端UI框架使用的是bootstrap4,喜欢吉他的小伙伴欢迎来这里逛一逛哟,有什么建议欢迎在留言板提一下哟。
  • 那个泛目录网站发布了几个星期了,百度没怎么来爬,收了一个首页,谷歌直接就不收了,倒是一个查外链的网站天天来爬(笑哭),还有建议一点就是泛目录还是用在有建站历史的域名比较好(因为已经过了审核期),新域名就尽量不要用了。
  • 刚刚又发了一篇,最近文章百度都不太收录,orz,哈哈
  • 之前那个用python做的静态资源服务器,我又发现了一大用处,现在我都用来在局域网里的不同电脑之间传输文件,真的好用哈哈
  • 今天交换到了博客有史以来第一条友情链接
  • 刚刚更新了一下博客,修复了一些bug,添加了一个项目页