URL redirection,或称网址重定向或URL重定向,是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网站网址,转成较短的网址。因为当要传播某网站的网址时,常常因为网址太长,不好记忆;又有可能因为换了网络的免费网页空间,网址又必须要变更,不知情的使用者还以为网站关闭了。这时就可以用网络上的转址服务了。这种方法还可以用在广告推送及拦截上, 最常见的就是电信使用的了。
在技术上, URL重定向可以很多种方法实现, 下面介绍其中常用的几种.
方法一:
通过返回一个简单的HTML页面, 采用自刷新方式,将页面重新引至新URL页面. 示例:
<html><head>
<meta http-equiv="Refresh" content="0; url=http://www.example.com/">
</head><body>
<p>Please follow <a href="http://www.example.com/">link</a>!</p>
</body></html>
方法二:
通过返回一个HTTP refresh header, 进行重定向. 示例:
HTTP/1.1 200 ok
Refresh: 0; url=http://www.example.com/
Content-type: text/html
Content-length: 78
Please follow <a href="http://www.example.com/">link</a>!
方法三:
通过HTTP 状态码301 Moved Permanently 永久重定向, 示例:
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/
Content-Type: text/html
Content-Length: 174
<html>
<head>
<title>Moved</title>
</head>
<body>
<h1>Moved</h1>
<p>This page has moved to <a href="http://www.example.org/">http://www.example.org/</a>.</p>
</body>
</html>
经过个人测试, 发现采用HTTP 状态码301 Moved Permanently方式速度比较快.
以下是内核实现源码, 测试的时候有个小bug 把mac地址填错了, 结果调试了N久,还发帖了, 最终自己才发现, 真是惭愧.
参考:
URL redirection http://en.wikipedia.org/wiki/URL_redirection