描述

进公司没有多久遇到一个问题,定义的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. 只会用就out了,手写一个符合规范的Promise

    Promise是什么 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可以获取异步操作的消息.Prom ...

  2. 一起学习造轮子(一):从零开始写一个符合Promises/A+规范的promise

    本文是一起学习造轮子系列的第一篇,本篇我们将从零开始写一个符合Promises/A+规范的promise,本系列文章将会选取一些前端比较经典的轮子进行源码分析,并且从零开始逐步实现,本系列将会学习Pr ...

  3. 一个页面从输入URL到加载显示完成,发生了什么?

    面试经典题--URL加载 一.涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns.http):DNS解析成IP并完成http请求发送: 传输层(tcp.udp):三次握手四次挥手模 ...

  4. 【转载】C#中List集合使用LastOrDefault方法查找出最后一个符合条件的元素

    在C#的List集合中,FirstOrDefault方法一般用来查找List集合中第一个符合条件的对象,如果未查到则返回相应默认值.其实如果要查找最后一个符合条件的List集合元素对象,可以使用Las ...

  5. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  6. C#如何检测一个字符串是不是合法的URL

    C#如何检测一个字符串是不是合法的URL using System.Text.RegularExpressions;    /// <summary>         /// 检测串值是否 ...

  7. c++中在一个类中定义另一个只有带参数构造函数的类的对象

    c++中在一个类中定义另一个只有带参数构造函数的类的对象,编译通不过 #include<iostream> using namespace std; class A { public:  ...

  8. 一个页面从输入url到页面加载显示完成,中间都经历了什么

    第一种解释: 一般会经历以下几个过程: 1.首先,在浏览器地址栏中输入url 2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作. 3 ...

  9. C# 判断一个字符串是否为url

    /// <summary> /// 判断一个字符串是否为url /// </summary> /// <param name="str">< ...

随机推荐

  1. 在春意盎然的季节里初识GIT

    Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等. 如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征. ...

  2. Javascript 相关文章 —— 性能

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 概览 无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaS ...

  3. AngularJs之三

    一.angularJs的指令模型ng-model指令 ng-model 指令 绑定 HTML 元素 到应用程序数据. 为应用程序数据提供类型验证(number.email.required).为应用程 ...

  4. Android 捕获异常并在应用崩溃后重启应用

    问题概述: 在Android应用开发中,偶尔会因为测试的不充分导致一些异常没有被捕获,这时应用会出现异常并强制关闭,这样会导致很不好的用户体验,为了解决这个问题,我们需要捕获相关的异常并做处理. 首先 ...

  5. backup1:开始数据库备份

    数据库备份分为数据文件备份和日志文件备份,数据文件的备份分为:完整备份和差异备份.在SQL Server 2012中,能够将数据分布式备份到不同的存储设备上,一般情况,只将数据备份到一个备份文件(.b ...

  6. 前端学HTTP之基本认证

    前面的话 人们用Web进行私人事务处理,访问私有的数据.通过Web可以很方便地访问这些信息,但仅仅是方便访问还是不够的.我们要保证只有特定的人能看到我们的敏感信息并且能够执行我们的特权事务 服务器需要 ...

  7. JavaScript中尺寸、坐标

    测试环境是IE8,Chrome38,Firefox40,下面是全局通用脚本打印代码 /** * 打印 */ function write(str) { document.write(str + '&l ...

  8. React.js深入学习详细解析

    今天,继续深入学习react.js. 目录: 一.JSX介绍 二.React组件生命周期详解 三.属性.状态的含义和用法 四.React中事件的用法 五.组件的协同使用 六.React中的双向绑定   ...

  9. ASP.NET Core 中文文档 第二章 指南(8) 使用 dotnet watch 开发 ASP.NET Core 应用程序

    原文:Developing ASP.NET Core applications using dotnet watch 作者:Victor Hurdugaci 翻译:谢炀(Kiler) 校对:刘怡(Al ...

  10. 利用Python进行数据分析(10) pandas基础: 处理缺失数据

      数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...