TinyURLのようなRedirectionの仕組み

以下のように設定するとできるようになる。

1. まず .htaccessで以下の行を追加する。
ErrorDocument 404 /jump.php
この意味は、HTTPサーバーで404のエラーが起きたら、/jump.php へ飛ぶという意味だ。404のエラーとは、URLが見つからなかったときのエラーだ。/jump.php の名称は実際にあるファイルならばなんでもよい。

2. Redirectionをするプログラムjump.phpをつくる。

<?php
$mysql_id = "";
$mysql_password ="";
$mysql_database = "";
$mysql_table = "";
$request_uri = substr($_SERVER['REQUEST_URI'],1);
$con = mysql_pconnect("localhost", $mysql_id, $mysql_password) or die("Could not connect");
mysql_select_db ($mysql_database);
$result = mysql_query("select * from $mysql_table where code='$request_uri' ", $con);
if (mysql_num_rows($result) == 0) {
    print "404 URL is not fired!";
  mysql_close($con);
   exit;
} else {
    $url = mysql_result($result, 0, "url");
}
mysql_close($con);
header("Location: ".$url);

?>


$mysql_id, $mysal_password, $mysql_database, $mysql_tableは、みなさんの環境に合わせて欲しい。その他も環境に依存すると思う。

3. MySQLでテーブルを作成する。
2つの列、code, url だけの文字列のテーブルだけ。

4. あとはこのテーブルに対応するコードとURLを記入していけばよい。
テーブルに書くプログラムはちょっと面倒なんで後で書こうと思う。

以上、ファイルが見つからないというエラーを利用して、他のページにジャンプする仕組み(Redirection)でした。

こうすると、
http://solisart.com/blog と入力すると、 http://plaza.rakuten.co.jp/solis/ へジャンプします。

他にも以下のようになります。
http://solisart.com/yahoo → http://www.yahoo.co.jp/
http://solisart.com/google→ http://www.google.co.jp/

これがTinyURLが実施しているしくみです。 http://tinyurl.com/