像新浪微博那样的链接转向怎么做到的

解决方案 »

  1.   

    生成无重复短url,存数据库。
      

  2.   


    那这个短url是怎么样转向原始链接的呢?
      

  3.   


    http://www.cnblogs.com/owenliang/archive/2011/12/29/2306328.html这是我之前写的博客,刚才抓包具体看了一下:
    GET http://t.cn/zOpTC08?u=1871644045&m=3439048976859406 HTTP/1.1
    Host: t.cn
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Referer: http://weibo.com/at/comment?topnav=1&wvr=3.6
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8
    Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
    HTTP/1.1 302 Moved Temporarily
    Location: http://www.gogtuan.com/team.aspx?id=381
    Content-Type: text/html;charset=UTF-8
    Server: weibo
    Content-Length: 222
    Date: Thu, 26 Apr 2012 05:05:03 GMT
    X-Varnish: 92771397
    Age: 0
    Via: 1.1 varnish
    Connection: keep-alive<HTML>
    <HEAD>
    <TITLE>Moved Temporarily</TITLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
    <H1>Moved Temporarily</H1>
    The document has moved <A HREF="http://www.gogtuan.com/team.aspx?id=381">here</A>.
    </BODY>
    </HTML>
    可以看到,t.cn这个域名做了重定向操作,当然URL也使用了一点点重写,就这么个原理。
    <a title="http://www.gogtuan.com/team.aspx?id=381" href="http://t.cn/zOpTC08" target="_blank" mt="url" action-type="feed_list_url">http://t.cn/zOpTC08</a>这是页面上的超链接,估计上传的微博里的URL生成短连接替换掉原连接,整条微博入库,并且将短连接到长连接的映射入库,下一次读微博就是整条出库,title属性估计是已缓存的映射关系就直接放在里面了,这个缓存应该是t.cn域名在做重定向时候查询数据库产生的,前端JS控制根据title决定是否走重定向还是可以直接请求title的URL。