2012年3月7日水曜日

自前のapacheサーバで短縮URLを運用するためのヒント

独自ドメインで短縮URLを運用するには、
以前書いたようにbitly.comの無料サービスを使うのがお手軽です。
統計情報もでますし。
しかし、実はURLのホスト名部分は
独自URLでも"bit.ly"でも同じ結果になりますし、
ファイル名部分はユーザ側でコントロールできませんし、
プライベートにしか使いたくないURLを登録するのは
なんだか気が引けたりと、
いいことばかりではありません。

私の短縮URLの主な利用動機は、
URLを紙に書いて渡すのが楽ということだったりするのですが、
そもそもアルファベットの大文字小文字入り乱れたURLが
インターネット初心者には心の障壁になるようで
バリアフリーを目指すこの世の中に逆行している気配があります。

ということで、
ServersMan@VPS(Debian,32bit)でちょこっとだけ
テスト運用してみることにしました。
そのうちデータベース連携させようとは思いますが、
今回はさわり程度ということでご了承ください。

まずapacheの設定変更です。
設定ファイル"/etc/apache2/sites-available/default"の
RewriteEngine On
の行の直後に
RewriteRule ^/q/(.*)$ /q.php?shorturl=$1 [PT,L]
の行を追加し、apacheを
# /etc/init.d/apache2 restart
で再起動します。
こうすることで
http://<サーバ名>/q/<文字列>
へのアクセスがapacheの内部的に
http://<サーバ名>/q.php?shorturl=<文字列>
として処理されることになります。

では処理するためのPHPスクリプト"/var/www/html/q.php"を
サンプル程度に作ってみます。
基本的に
$_GET["shorturl"];
で得られた文字列からどこのURLに飛ぶかを判断して
そのURLにリダイレクトさせるだけです。
例えば
http://<サーバ名>/q/g
をgoogleに、
http://<サーバ名>/q/y
をyahooに飛ばしたければ"q.php"は以下のようになります。
<?
$shorturl=$_GET["shorturl"];
$url="";
switch($shorturl){
case "g":
        $url="http://www.google.com";
        break;
case "y":
        $url="http://www.yahoo.co.jp";
        break;
}
if($url!=""){
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: $url");
        exit();
}
?>
<html>
<body>
<?
        print "I have no url about [$shorturl]";
?>
</body>
</html>
あとは応用次第です。

0 件のコメント:

コメントを投稿