zoukankan      html  css  js  c++  java
  • 如何定义好一个符合规范的url

    描述

    进公司没有多久遇到一个问题,定义的url会被大神吐槽说是很渣。之前从来没有注意这块,今天把我们团队的url规范分享给大家。

    为什么需要URL规范化

    1、网站URL和结构已经成为网站搜索引擎友好的最大基础性问题,网站URL 和结构问题,早发现早优化,越是往后放,最后就成了制约网站运营和产品开发的决定性因素。
    2、无论是网站的可用性还是网站对搜索引擎的吸引力,清晰明了的浏览路径都是相当重要的,URL是统一资源定位,即每个网页的网址、路径。
    3、浏览路径让网站的导航结构更清晰,可以更加平衡的分布网站权重。

    反例(不规范的URL)

    URL中多余的字符

    1、子域名的URL中包含"www": "http://www.shuchao.cnblogs.com/"

    2、含有默认端口: "http://www.cnblogs.com:80/shuchao/"

    3、松散的URL: "http://www.chapters.indigo.ca/books/amazon-sucks-donkey-balls/9780470170779-item.html"

    4、多余默认文件名index.html,default.aspx等:"http://www.cnblogs.com/shuchao/index.html"

    5、文件路径中包含多余的"/":"http://www.cnblogs.com/shuchao//",多余的点修饰串:"x/y/z/http://www.cnblogs.com/a/b/http://www.cnblogs.com/../page.html"

    6、查询串中多余的 ? (空查询串):http://www.cnblogs.com/shuchao?

    7、多余的& 无用的查询变量:http://www.example.com/display?id=123&fake=fake

    URL缺少字符串

    缺少"/":"http://www.cnblogs.com/shuchao"
    查询串缺少名称或者值:"http://www.example.com/display?id=" 或者 "http://www.example.com/display?=123"

    其他不规范的URL

    1、"http://shuchao.cnblogs.com/" 与 "http://www.cnblogs.com/shuchao/"其实是相同的内容即同一个资源,最好不要有两个urL

    2、使用IP代替域名

    3、大小写敏感("http://www.google.cn/Intl/zh-CN/about.html" 和"http://www.google.cn/intl/zh-CN/about.html")

    4、查询变量顺序混乱:"http://www.example.com/test.aspx?bar=1&a=test"

    5、含临时的状态变量:http://www.example.com/test?back=/prevpage.aspx

    设计URL应该遵循的原则

    一、简单,好记

    简单好记的域名会给人以深刻的印象。

    二、URL中的字母全部用小写

    全部用小写,用户比较容易输入,不用因为大小写混合而出现错误,这是人们的输入习惯
    有些服务器是区分大小写的,例如Lunix服务器,这样在站长做链接或者是用户输入时,会因为大小写的问题而出现404错误,
    而且robots也是区分大小写的,如果大小写搞错了,可能会造成不能收录的严重问题。所以建议所有的URL都使用小写

    三、连词符的使用

    目录或者文件名中如果有两个单词组成时,一般建议中间使用中划线(-)隔开,
    切记不要使用下划线或者其他字符,在搜索引擎中,它是把中划线当作一个空格来处理的,而下划线则是被忽略的,
    例如seo-caipiao会被读成seo与caipiao。这是比较友好的写法

    四、URL中避免太多参数

    设计的则是URL中的参数应该尽量减少,不要超过三个,一般的情况下URL中的参数2-3个就可以了。

    五、目录层次尽量少

    这里所指的目录层次是指物理目录结构,而不是指逻辑结构,我们在进行URL的设计时,
    网站的结构要尽量的去减少目录层次,层次不能太深了,一般建议不要超过三层,特别对于一些新站来说,
    权重低,搜索引擎蜘蛛爬行得很浅,深一点的页面,蜘蛛都很可能不会去爬行的,所以要尽量的做到使目录层次减少,
    URL缩短。根据观察,百度尤其比较喜欢目录层次比较少的页面。

    六、文件名及目录名要具描述性

    文件名及目录名要具有可描述性,不但让用户一眼就能看出来这个页面是关于什么的,
    对用户体验比较友好,而且搜索引擎也比较喜欢这样的URL。
    例如一个关于新闻的目录,我们可以把它命名为news,用户看到这个目录名称,大概就知道这个目录是关于什么内容的了。

    七、URL应该呈现一个降级的次序

    例如:域名/类型/分类/标题
    例如:域名/年/月/日
    http://domain.com/news/tech/2007/11/05/google-announces-android

    其他

    1.URL能反应站点的结构
    2.URL是可以被用户猜测和hack的(也鼓励用户如此)
    3.永久链接,Cool URLdon't change
    4.动态的也要做成伪静态

    url规范诞生

    一、基本规范

    1、不能使用中文单词,最好使用有意义的英文单词,少用拼音。

    2、层级不能超过三级。
    例如:http://domain.com/xx/xx/xx/xx.html不被允许

    3、URL的参数不允许超过3个

    4、URL全部小写

    5、网站内部在链接到其他网页,尤其是主页时,只使用一种URL,即不允许同一个资源有多个URL。

    6、不允许出现没有意义的下URL
    例如:http://www.uxuexi.cn/123.html。谁也看不明白是什么意思

    7、如果是内容资源URL,不允许以参数的方法显示
    例如:http://www.uxuexi.cn/user.html?userId=123 需要改成http://www.uxuexi.cn/user/123.html

    二、URL类型设置

    1、目录
    一般用在频道页或是文章栏目(这种方式能获得更多的权重),最后面必须加上“/”
    例如:http://www.uxuexi.cn/search需要改成http://www.uxuexi.cn/search/

    2、网页
    一般用来表现网页内容,需要直接显示在页面的必须以.html结尾
    例如:http://www.uxuexi.cn/123 需要改成http://www.uxuexi.cn/user/123.html

    3.特定功能或交互式
    统一以.json 或者.html结尾
    例如:
    添加评论 http://www.uxuexi.cn/addcomment.json

    三、静态化

    1、不经常更新的内容采用静态化。例如:http://course.uxuexi.cn/detail/111.html。URL中不允许使用?带参数
    2、实时更新的内容采用伪静态。例如:http://www.uxuexi.cn/user/111.html。URL中不允许使用?带参数
    特定功能或交互式用动态URL。

    约定

    所有需要跳转页面的url必须进行统一的管理,统一使用cms:url自定义标签来实现,方便维护和优化。
    例如
    每次添加url,必须写上注释。
    注释url功能,注释每一个参数是什么意思

    URL命名规则

    1、URL中字母全部小写
    2、如果有单词拼接,使用中划线‘-’,不使用下划线‘_’

    • 在搜索引擎中,把中划线当做空格处理,而下划线是被忽略的。使用中划线是对搜索引擎友好的写法

    3、资源必须采用资源名词的复数形式
    4、层级不能超过三层
    5、参数不允许超过3个
    6、 如果是内容资源的URL,不允许以参数方式显示

    • 例如: http://www.domian/com/users.html?id=1需改成http://www.domian/com/users/1
    {
      "current_user_url": "https://api.github.com/user",
      "current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",
      "authorizations_url": "https://api.github.com/authorizations",
      "code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
      "commit_search_url": "https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}",
      "emails_url": "https://api.github.com/user/emails",
      "emojis_url": "https://api.github.com/emojis",
      "events_url": "https://api.github.com/events",
      "feeds_url": "https://api.github.com/feeds",
      "followers_url": "https://api.github.com/user/followers",
      "following_url": "https://api.github.com/user/following{/target}",
      "gists_url": "https://api.github.com/gists{/gist_id}",
      "hub_url": "https://api.github.com/hub",
      "issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
      "issues_url": "https://api.github.com/issues",
      "keys_url": "https://api.github.com/user/keys",
      "notifications_url": "https://api.github.com/notifications",
      "organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
      "organization_url": "https://api.github.com/orgs/{org}",
      "public_gists_url": "https://api.github.com/gists/public",
      "rate_limit_url": "https://api.github.com/rate_limit",
      "repository_url": "https://api.github.com/repos/{owner}/{repo}",
      "repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
      "current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",
      "starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
      "starred_gists_url": "https://api.github.com/gists/starred",
      "team_url": "https://api.github.com/teams",
      "user_url": "https://api.github.com/users/{user}",
      "user_organizations_url": "https://api.github.com/user/orgs",
      "user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
      "user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
    }


    作者:钱英俊真英俊
    链接:https://www.jianshu.com/p/876d4cbd84f9
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    Effective Java 第三版——26. 不要使用原始类型
    Effective Java 第三版——25. 将源文件限制为单个顶级类
    Effective Java 第三版——24. 优先考虑静态成员类
    Effective Java 第三版——23. 优先使用类层次而不是标签类
    Effective Java 第三版——22. 接口仅用来定义类型
    Effective Java 第三版——21. 为后代设计接口
    Effective Java 第三版——20. 接口优于抽象类
    Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用
    Effective Java 第三版——18. 组合优于继承
    Effective Java 第三版——17. 最小化可变性
  • 原文地址:https://www.cnblogs.com/zzt-lovelinlin/p/10762711.html
Copyright © 2011-2022 走看看