URL(标准资源定位符)是否需要加`trailing slash`

基础知识

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

  1. 保证两个URL都能返回相同的内容
  • reason:如果两个URL只有末尾是否加slash之分却造成了返回不同的内容,用户会觉得十分的confused
  1. 最好两个URL返回相同的内容,并且一个返回200,另一个返回301
  • reason:如果两个URL不同但是返回相同的内容,搜索引擎会认为作弊,爬虫效率降低
  • resolve:
    - 方案一:
    - 选择一个preferred URL(做好将以slash结尾的URL作为preferred URL)作为返回200的URL,另一个URL redirect 到preferred URL
    - 并且保证整个项目中preferred URL的patter一致
    - 方案二:
    - 在HTML head中定义为每一套可能返回相同内容的URL定一个SEO preferred URL
  1. 对于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部分加入如下代码:

你可能感兴趣的:(URL(标准资源定位符)是否需要加`trailing slash`)