在内核中实现URL重定向

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

你可能感兴趣的:(apache,html,网络协议,电信)