基础知识
image.png- HOST和PATH之间使用
/
分割 - PATH和QueryString之间使用
?
分割 - 对于query string需要满足:
- 键值对形式: key=value
- 不同键值对之间使用
&
分割
- Query和Fragment之间使用
#
分割
那么问题来了:
http://www.example.com/product --> A 第一组
http://www.example.com/product/ --> B 第一组
http://www.example.com/product? source=googleps --> C 第二组
http://www.example.com/product/?source=googleps --> D 第二组
http://www.example.com/ --> E 第三组
http://www.example.com --> F 第三组
- 以上三组之间是否有区别呢?
- 末尾的
/
听说有利于SEO,那么是否必须要加上呢?
先summary
-
对于搜索引擎而言并不care是否在末尾加上了slash,只要你的服务器支持这种URL的请求即可。
-
最好这两种URL(加上slash和不加slash)能对应相同的资源,并让一个URL返回200另一个URL redirect到返回200的URL。
- http://www.example.com/product/ --> return 200
-
http://www.example.com/product --> return 301 redirect to http://www.example.com/product/
通常的做法将以slash结尾的URL作为preferred URL并返回200
如果实在没有办法完成,就必须使用
rel="canonical"
实现效果一样 -
对于project中的所有link以及
sitemap
都使用preferred URL
,否则会造成大量的redirect影响页面加载的效率 -
但是对于文件(path最后有扩展名)不要加slash 对于directory最好加上slash,比如 以html作为扩展名
https://webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html
回到问题的解答
加不加末尾的slash到底有没有区别呢?
结论是:需要分两种情况,有时候有区别有时候没有
没有区别
- 条件:URL只有
protocol
以及host
http://www.example.com/ --> E 第三组
http://www.example.com --> F 第三组
因此上面的EF对于SEO以及服务器都没有区别
有区别
- 条件:URL中有
path
http://www.example.com/product --> A 第一组
http://www.example.com/product/ --> B 第一组
http://www.example.com/product? source=googleps --> C 第二组
http://www.example.com/product/?source=googleps --> D 第二组
以上的两组对于服务器而言就是大区别了
-
解释
- 以上两种情况,对于服务器而言是两个不同的请求,因此如果你的服务器没有controller去处理这两个URL,就会导致某个URL返回404。
- 以上两种情况,其实对于SEO来说还是会认为他是两个URL
-
best practice
- 保证两个URL都能返回相同的内容
- reason:如果两个URL只有末尾是否加slash之分却造成了返回不同的内容,用户会觉得十分的confused
- 最好两个URL返回相同的内容,并且一个返回200,另一个返回301
- reason:如果两个URL不同但是返回相同的内容,搜索引擎会认为作弊,爬虫效率降低
- resolve:
- 方案一:
- 选择一个preferred URL(做好将以slash结尾的URL作为preferred URL)作为返回200的URL,另一个URL redirect 到preferred URL
- 并且保证整个项目中preferred URL的patter一致
- 方案二:
- 在HTML head中定义<link rel="canonical" href="+++">
为每一套可能返回相同内容的URL定一个SEO preferred URL
- 对于repo中的所有
跳转``sitemap
都使用Preferred URL
- reason: 对于浏览器而言,301还是相对比较浪费时间的,因此为了用户能够快速的看到资源要遵循这一条
ref=canonical的使用
背景
在一个网站中,可能会有不同的URL对应相同的页面内容的情况。这样会导致一些问题:
- 页面的权重会被分散:搜索引擎对相同内容的重复收录,网站相同内容页的重复展示造成的权重分散。不利于SEO
作用
其实对于开发人员和用户都没有办法感受到他的作用,只有搜索引擎能够感受到。
-
标签用于为搜索引擎指定规范网页。告诉搜索引擎,在多个内容相同页面中,哪个才是规范的网页,即:多个网页中的首选版本。
- 避免搜索引擎对相同内容的重复收录
- 避免网站相同内容页的重复展示造成的权重分散
-
和301方式不同,所有URL返回的都是200,只是搜索引擎知道哪一个首选页面
用法
假设网站上有如下网址所在页面内容是相同的:
http://www.exmaple.com/products
http://www.exmaple.com/products?sessionid=dfaf2r
http://www.exmaple.com/products?trackingid=feed
可以在head meta部分加入如下代码:
<link rel="canonical" href="http://www.exmaple.com /products" />
网友评论