或者

大量重复URL被百度索引收录的解决方法

作者:数风流人物 浏览:146 发布时间:2017-05-03
分享 评论 0

最近,很多SEO有这样的疑惑:索引量工具显示索引量数值很高,但流量总也上不去,也没有发现我们站内有低质内容,百度这是要闹哪样呀?对此,马海祥找到了导致索引量高流量低的一个原因,并给出的解决方法。

首先声明,我们只谈论有检索意义的URL,也就是用户会从搜索引擎查找的页面,其他页面按照常用的方法做屏蔽就好了,鉴于很多站长都爱讨论整体的收录量,我必须泼一下冷水,也许你的有效收录是1/10。

1、URL参数

URL参数也叫URL query,是一个最复杂,最容易被忽视,最容易被妥协的问题,他是网站运营中必不可少的元素,如果简单的去除,其他部门就无法工作了,静态化是的话题,URL参数经常被用于以下几方面:

同一个实体的不同状态展示,比如同一个酒店,在不同时间点会有不同的房间库存,例如:首页网址/hotel/123/?checkindate=2015-06-09&checkoutdate=2015-06-10

为了统计不同渠道的流量,例如:首页网址/?tracking=website_a

为了统计不同渠道,具体模块的点击量,例如:首页网址/?tracking=website_a&click_spot=zone_abc

调试,例如:首页网址/product/item123/?debug=true

全世界最奇葩的是亚马逊,居然把统计参数放到了路径中首页网址/abc/dp/B005TZHJEQ/ref=lp_2130608051_1_1

出现这种问题的坏处有几点:

(1)、浪费搜索引擎对你网站的各项配额,从而影响其他正常的页面。

(2)、丢失很多本应拿到的链接加分,站外渠道的链接往往是最优质的,同一个URL的分值可能分散成几十份。

(3)、SEO的流量被统计到别的渠道(因为tracking字段写的是别的渠道,而且被收录被点击)。

(4)、往往形成一种局面,产品用一套URL,SEO用另一套URL,甚至不同渠道用不同的URL,后期开发和维护的成本极高。

为了解决这个问题,首先要弄清URL的定义,以马海祥的理解,每一个URL是一个静态的、独立不重复的、有意义的实体,一般也有检索意义(就是有人会搜),比如一个人、一辆车、一条道路、一个零件,而不能混入各种“状态”,比如这个人生病的时候,难道就不是他自己了么?一件商品在促销的状态难道是另一件商品了么?

理论上canonical标签就可以解决这个问题了,但是从实际测试结果看,百度对这个标签的支持优先级非常低,几乎可以忽略不计,因此,马海祥博客建议的解决方案是这样的:

(1)、建立好网站的思维导图和元信息。

(2)、所有和SEO元信息相关的参数都放到路径中去。

(3)、所有和SEO元信息不相干的参数都放到#后边,因为#后边不影响web服务器返回的内容,简单的说就是用"#"替代"?"。

(4)、每个页面中都利用js获取#后边的参数对,通过二次请求发回给统计服务器。

(5)、如果#后边的参数影响页面内容,比如酒店的入住日期,那么这部分内容用ajax加载就行,他是不稳定的,不属于页面内容的一部分。(当然还有变通的办法,暂不赘述)

(6)、原始的#锚点定义肯定会冲突,定义一个#后边的变量,并用js控制屏幕滚动,来保证原始锚点的作用。

有人可能会想到,根据ua判断,如果是搜索引擎爬虫,就用跳转的方式去掉URL参数,但在马海祥看来,效率最高的方法必然是从一开始就不展示错误URL,那么前面的例子优化后就变成了:

同一个实体的不同状态展示,比如同一个酒店,在不同时间点会有不同的房间库存,例如:首页网址/hotel/123/#checkindate=2015-06-09&checkoutdate=2015-06-10

为了统计不同渠道的流量,例如:首页网址/#tracking=website_a

为了统计不同渠道,具体模块的点击量,例如:首页网址/#tracking=website_a&click_spot=zone_abc

调试,例如:首页网址/product/item123/#debug=true

其实很多网站早就使用这种方式了,但是还有很多网站由于开发效率无法及时实现,所以,对于一般的小网站,一定要考虑开发成本,不要轻易冒进,只要能避免问题的发生,变通的方法是很多的。

2、路径中使用非必要元素

很多网站仿照亚马逊的做法,把商品名体现在URL中,然后再通过id来决定页面展示的内容,例如:首页网址/博集典藏馆043?基督山伯爵-亚历山大?仲马/dp/B005TZHJEQ/

这样虽然可以提高一些相关性,但是很危险,在长期甚至短期的时间内,大量商品的名称是非常可能有变化的,那么URL也就跟着变化,成本也是非常高的,因为加大了技术实现难度,不管从站内还是站外,每次增加链接都是一个很麻烦的事情。

我曾接手一个网站,URL被全部改成了这样:首页网址/Shangrila_International_Hotel-12345678-hotel/,对我早期的工作造成了非常巨大的负担。

通过日志分析发现基本所有的百度蜘蛛发起的请求都被301跳转了一次,细致调查后发现,从SEO拼接规则到后台的汉字和翻译数据被一直修改,也就是说,这个URL相关的元素有:

(1)、中文(非必要元素)

(2)、由中文翻译的英文(非必要元素)

(3)、id(必要元素)

而当时负责SEO的同事把英文和id拼接在了URL中,那么这样一个URL先后变成过:

首页网址/Shangrila_International_Hotel-12345678-hotel/

首页网址/Xianggelila_International_Hotel-12345678-hotel/

首页网址/XiangGeLiLa_International_Hotel-12345678-hotel/

首页网址/Shangrila_guoji_Hotel-12345678-hotel/

跟“相关性”比,URL的唯一性和稳定性更重要,所以,针对这个问题,URL的最佳策略应该是:首页网址/hotel/12345678/

如果这个id是隶属于一个分类下的,比如城市,那么就可以是:首页网址/hotel/beijing/123/

从技术角度说,id一般是数据库的primary key,可以是数字也可以是字符串,那么这个时候URL是一维的;id也可以是联合的唯一索引,那么URL就是二维的,就像上面的(bejing,123)缺一不可,电商类网站列表页经常用到三维以上。

3、URL中的字母建议全部小写

如果网站的技术架构用的是开源系统,一般是不会有这个问题的,如果使用了微软的技术架构,这个问题非常常见:

首页网址/newyork/

首页网址/Newyork/

首页网址/NewYork/

我的建议是统一使用小写,大写自动跳转为小写(小心301死循环)。

URL中字母全部小写主要有两个好处:

(1)、全部使用小写方便用户输入,不会因为大小写混搭导致用户输写错误。

(2)、当我们写robots文件代码时,其也是区分大小写的,往往一个字母之差可能就导致整个目录不能被搜索引擎收录。

4、目录的规范

很多网站同时存在这样的URL,无形中把收录量扩大了一倍:

首页网址/product/123

首页网址/product/123/

上边第一个路径的意思是在product目录下有一个123文件,第二个路径的意思是在product目录下有一个123目录,这个目录下可能有很多文件,但是他代表众多文件中的index.html或index.php或default.aspx等优先级最高的那个文件,为了避免歧义,我定义文件都是用".html"结尾的。

为了减少重复收录,那么按我的习惯是:

首页网址/product/123  => 首页网址/product/123/

首页网址/product/123  => 首页网址/product/123.html

简单的来说,就是以下几点:

(1)、所有部门统一使用SEO定义的URL,屏蔽非SEO优化URL的入口。

(2)、用“#”替代“?”。

(3)、统一使用小写。

(4)、保证目录的规范,把不规范的URL跳转到规范的URL。

5、URL尽量使用静态化处理

现在的网站绝大多数是使用数据库进行驱动的,页面是由程序实时生成,而不是真的在服务器上有一个静态HTML文件存在,当用户访问一个网址时,程序根据URL中的参数调用数据库数据,实时生成页面内容,因此,动态页面相对应的URL原始状态也是动态的,其中包含了问号、等号及参数,这就造成了搜索引擎收录困难,所以,如果没有什么特殊原因的话,尽量对URL做静态化处理。

6、URL层级不要超过三层

当然,这里说的URL层级不超过三层说的是那些中小型网站,如果你的网站是大型网站那就不在这个控制范围内了,因为搜索引擎把一些大型网站的频道页也当成一个单独的种子站点来处理了,搜索引擎就会在这个频道页再深度爬取三层,也就是说,一些大型网站的频道页就相当于我们一个个人网站了。

7、URL尽量越短越好

这个主要是站在用户的角度考虑了,因为URL越短,代表用户就越方便记忆,用户看起来也没有那么费事,相对于搜索引擎来说,只要我们控制好URL长度不超过1000字母,那搜索引擎收录起来是完全没有问题的。