本篇文章给大家分享的是有关如何避免网站重复URL被百度收录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
URL参数
也叫URL query,是一个最复杂,最容易被忽视,最容易被妥协的问题。他是网站运营中必不可少的元素,如果简单的去除,其他部门就无法工作了。 静态化是的话题,URL参数经常被用于以下几方面:
同一个实体的不同状态展示,比如同一个酒店,在不同时间点会有不同的房间库存:?checkindate=2015-06-09&checkoutdate=2015-06-10
为了统计不同渠道的流量:?tracking=website_a
为了统计不同渠道,具体模块的点击量:?tracking=website_a&click_spot=zone_abc
调试:?debug=true
全世界最奇葩的是亚马逊,居然把统计参数放到了路径中=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。那么前面的例子优化后就变成了:
#checkindate=2015-06-09&checkoutdate=2015-06-10
#tracking=website_a
#tracking=website_a&click_spot=zone_abc
#debug=true
其实很多网站早就使用这种方式了,但是还有很多网站由于开发效率无法及时实现。所以对于一般的小网站,一定要考虑开发成本,不要轻易冒进。只要能避免问题的发生,变通的方法是很多的。
路径中使用非必要元素
很多网站仿照亚马逊的做法,把商品名体现在URL中,然后再通过id来决定页面展示的内容:博集典藏馆043•基督山伯爵-亚历山大•仲马/dp/B005TZHJEQ/
这样虽然可以提高一些相关性,但是很危险。在长期甚至短期的时间内,大量商品的名称是非常可能有变化的,那么URL也就跟着变化。成本也是非常高的,因为加大了技术实现难度,不管从站内还是站外,每次增加链接都是一个很麻烦的事情。
在我接手艺龙SEO之前,URL被全部改成了这样,对我早期的工作造成了非常巨大的负担:
通过日志分析发现基本所有的百度蜘蛛发起的请求都被301跳转了一次(日志分析方法可参考SEO健康度 )。细致调查后发现,从SEO拼接规则到后台的汉字和翻译数据被一直修改。也就是说,这个URL相关的元素有:
1. 中文 (非必要元素)
2. 由中文翻译的英文 (非必要元素)
3. id (必要元素)
而当时负责SEO的同事把英文和id拼接在了URL中,那么这样一个URL先后变成过:
跟"相关性"比,URL的唯一性和稳定性更重要。所以针对这个问题,URL的最佳策略应该是:
如果这个id是隶属于一个分类下的,比如城市,那么就可以是:
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。