美文网首页
URL(标准资源定位符)是否需要加`trailing slash

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

作者: 张培_ | 来源:发表于2018-10-09 21:24 被阅读13次

    基础知识

    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。

      如果实在没有办法完成,就必须使用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中定义<link rel="canonical" href="+++">为每一套可能返回相同内容的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部分加入如下代码:
    <link rel="canonical" href="http://www.exmaple.com /products" />
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/aezyaftx.html