2009年7月1日

让你的域名或BLOG也拥有短网址功能

说到短网址功能我想大家应该不陌生,比如常用的http://bit.ly、FF的http://ff.im,Flickr最近也推出了他们的flic.kr短网址服务。短网址就是用是一个简短的网址跳转到相对冗长或不好记的网址上。

我想你应该知道twitter的网址习惯,他为每一个用户提供一个短网址服务,比如我的Twitter就是http://twitter.com/nipao,而非二级域名,Facebook前段时间也推出了个性名称服务,其格式也是http://facebook.com/nipao。不难看出这样的格式越来越受欢迎,当然我今天和大家分享的仅仅是一个类似Twitter和Facebook的域名跳转功能。先看看我的演示效果:

我的淘宝:http://nipao.com/taobao

Twitter:http://nipao.com/twitter

Flickr相册:http://nipao.com/flickr

我的豆瓣:http://nipao.com/douban

就是这样一个简单的功能,让你轻松记忆你的网址。

前提条件:

1、拥有自己的主机域名

2、服务器已安装rewrite_mod (可以通过PHPINFO查看)

下一步就是安装文件了,在你的网站或域名的要目录下新建一个np-shorturl.php文件并写入下面代码:

<?php
    $shortUrl = array(
        '/taobao' => 'http://shop34478690.taobao.com/',
        '/twitter' => 'http://twitter.com/nipao',
        '/shop' => 'http://www.nipao.com',
        '/flickr' => 'http://www.flickr.com/photos/nipaoalbum',
        '/ff' => 'http://friendfeed.com/nipao',
        '/douban' => 'http://www.douban.com/people/nipao/',
        '/digu' => 'http://digu.com/nipao',
        '/facebook' => 'http://facebook.com/nipao'
    );
    if(isset($shortUrl[$_SERVER[REQUEST_URI]])){   
        header ('Location: '. $shortUrl[$_SERVER[REQUEST_URI]]);
    }else{ 
        //如果找不到你自定义的地址,跳转到首页
        header ('Location: http://www.nipao.com');
    }   
?>

代码中$shortUrl这个数组中的内容可以自己修改,比如

'/taobao' => 'http://shop34478690.taobao.com/',
中的/taobao就是你自定义的地址,http://shop34478690.taobao.com是你想跳转到的地址。注:你可以添加N个这种的短网址跳转服务,每个list之间用英文逗号(,)隔开。

接下来编写.htaccess内容了,这个文件只能在linux下创建,你也可以在win下随意创意一个文件然后再上传到linux服务器下rename就可以了。

# BEGIN ShortURL
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-z]+)/?$ np-shorturl.php?id=$1 [L]
# END ShortURL

OK,下面我想应该可以正常使用了。当然这是一个简单的也比较实用的个人短网址服务,如果你搞一个真正类似http://bit.ly的服务,我推荐你使用YOURLS,这是一个开源的 PHP 的程序,让你可以运行自己的 URL 缩短服务。

6 条评论:

  1. 囧 原理就是301转向嘛……

    回复删除
  2. @Showfom 我这个是用程序实现的,你也可以用301。因为我nipao.com目录下还有其它的东西,用301会影响我的商城,所以……

    回复删除
  3. @nipiao 我用的是short url script 演示:http://files.showfom.com/

    回复删除
  4. 我试了但是不行!不知道为什么?

    回复删除