URL,uniform resource locator,经常被称为网址,尤其是在使用HTTP的时候。通常是一个指向某个资源的字符串。

 
URLs经常被用于网页(http),但也可以用于文件传输(ftp),email(mailto)等等。
 

语法

scheme://domain:port/path?query_string#fragment_id
 
   scheme name:
    通常被认为是某种协议,定义了资源被如何获得。比如http,https,ftp,file等。大小写不敏感,但是经常以小写形式出现。
 
    host:
    通常以域名(domain name)或者IP地址提供。当以IPv6形式提供时,需用[]括起。例如,[db8:0cec::99:123a]。使用域名大小写不敏感,因为DNS大小写不敏感。http://www.baidu.com 和HTTP://WWW.BAIDU.COM  表示同一个网址。 
 
    port number:
    可选项。如果忽略,协议的默认端口将被使用。
 
    path:
    path被用来指定请求资源的位置。大小写敏感,因为在一个系统中,目录是大小写敏感的。
 
    query string:
    传递给web server中运行的程序(比如CGIs)。可以包含以符号'&'分隔的键值对,比如:
    ?first_name=John&last_name=Doe
 
    fragment identifier:
    指定资源或者文档中的位置。特别是在HTML中,使用锚标记来定位页面中的某个位置。比如一个页面中的章节名。
 

short URL短网址

短网址是一种使URL变短而仍指向原来的页面的技术。可以基于HTTP重定向技术来实现。
 
在新浪微博或者微信中可以发现大量的短网址,比如http://t.cn/R2X9KVS  ,又或者http://b0m.l.mob.com/ZS1kR,主要是因为像微博这种平台的字数限制以及在移动端浏览的时候能够更加美观。
 
百度http://dwz.cn/及新浪http://sina.lt/ 提供短网址生成还原服务。
 

短网址技术细则

每个长网址都关联一个唯一的key(unique key),比如上面的网址http://t.cn/R2X9KVS 中的key就是R2X9KVS。发给浏览器的重定向指令HTTP 头部的状态码可以是301,302或者307。
 
key可以基于base 36(即36进制)生成(26个字母+10个数字),在这种情况下,在生成序列中的每个字符将会是0,1,2,..,9,a,b,c..y,z.如果考虑大小写,可以考虑base 62(即62进制)(26+26+10)。使用hash 函数或者随机生成数来产生key,这样生成的key将会变得不可预测。
 

参考资料:

Wikipedia

URL及short URL短网址的更多相关文章

  1. PHP调用百度api生成短网址&根据短网址恢复长网址

    接口api文档地址:http://dwz.cn/#/apidoc?_k=i9ev5p 代码demo header("Content-type: text/html; charset=utf- ...

  2. 短网址(short URL)系统的原理及其实现

    短网址(short URL)系统的原理及其实现 https://hufangyun.com/2017/short-url/?hmsr=toutiao.io&utm_medium=toutiao ...

  3. short URL 短网址实现原理剖析

    short URL 短网址实现原理剖析 意义,简短便于分享,避免出现超长 URL 的字符长度限制问题 原理分析, 使用 HashMap 存储对应的映射关系 (长度不超过7的字符串,由大小写字母加数字共 ...

  4. 用PHP实现URL转换短网址的算法示例

    短网址就是把一个长的地址转换在超级短的网址,然后访问短网址即可跳转到长网址了,下面来看用PHP实现URL转换短网址的算法与例子. 短网址(Short URL) ,顾名思义就是在形式上比较短的网址.在W ...

  5. C#如何实现url短地址?C#短网址压缩算法与短网址原理入门

    c# url短地址压缩算法与短网址原理的例子,详细介绍了短网址的映射算法,将长网址md5生成32位签名串,分为4段,每段8个字节,然后生成短网址,具体见文本实例. 短网址映射算法: 将长网址md5生成 ...

  6. 【转】C# URL短地址压缩算法及短网址原理解析

    这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...

  7. URL短网址生成算法原理和php实现案例

    短网址(Short URL),顾名思义就是在形式上比较短的网址. 短链接的好处:1.内容需要:2.用户友好:3.便于管理为什么要这样做的,原因我想有这样几点:微博限制字数为140字一条,那么如果我们需 ...

  8. 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)

    短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代 ...

  9. URL短网址系统的算法设计及实践

    在通常情况下,URL是由系统生成的,通常包括URI路径,多个查询参数,可以对参数进行加密和解密.当人们要分享某个URL,比如短信,邮件,社交媒体,这就需要短URL. 而短网址,顾名思义就是在长度上比较 ...

随机推荐

  1. made his acquaintance|adequate|advisable|announce|contrived to|made up|toss|considering that

    PHRASE 与(某人)初次相识;结识(某人)When you make someone's acquaintance, you meet them for the first time and ge ...

  2. springboot学习笔记:6.内置tomcat启动和外部tomcat部署总结

    springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XX ...

  3. cs231n spring 2017 lecture2 Image Classification

    1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...

  4. linux debain systemd 开机启动 nodejs 兼容原initd启动 forever 开机自启

    布署环境为debian 7.5 布署到一台新机器,系统版本为debian 8.0 原启动项 /etc/init.d/mongo_service 开机居然无法自起 开机自启动不能用了,看页面输出就发觉不 ...

  5. Ubuntu16.04使用sublime text3编写C语言后,实现编译并自动调用bash终端运行程序

    实现编译并自动调用bash运行程序只需要新建自己的.build文件就OK 依次打开: tools->building system->new building system 后,把下面的内 ...

  6. Trie树的插入,查前缀,查单词,删前缀和删单词。

    这个Trie原先用C++就敲得很熟了,看了蓝桥杯的视频后学会把一个功能这样封装起来,以后用的时候就很爽可以直接调用了,所以就用Java写了: public class Trie { private f ...

  7. (警告)不要轻易删除libc.so.6,以及误删恢复

    网上有很多帖子介绍升级libc.so.6库的帖子,这里存在巨大的坑: 如: Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题) 里边都会有这样 ...

  8. python 面向对象静态方法、类方法、属性方法、类的特殊成员方法

    静态方法:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性. 在类中方法定义前添加@staticmethod,该方法就与类中的其他(属性,方法)没有关系,不能通过实例化类调用方法使用 ...

  9. python有关汉字编码问题

    python分为:程序编码(python安装程序).文件编码. 查看程序编码方式:sys.getdefaultencoding() 查看文件编码方式:1.import  chardet  2. f = ...

  10. python猜数字游戏快速求解解决方案

    #coding=utf-8 def init_set(): r10=range(10) return [(i, j, k, l) for i in r10 for j in r10 for k in ...