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/