独自の短縮URL

このブログの記事数は、現在1000くらい。個別記事のURLは数字にして運用しているのですが、6桁は必要なかったみたい。それでも、短い独自ドメインとアーカイブのディレクトリを短くして、数字以外の部分では、短くなるように工夫しています。

最初が、
http://www.hkd.csice.com/earlgrey/archive/000123.html
って感じで運用していたのが、
https://e.tpot.tk/a/000123.html
となりました。

それでも、Twitterの普及で短縮URLが流行っています。

せっかく短いドメインを取得しているので、自分のサーバーで短くできないものかと考えました。

そこで、
http://tpot.tk/exx
って感じにしてみようと考えました。62進数だと、2桁にしかなりません。短縮URLサービスを使うより短いかも。eの部分は、今後の拡張を考え、ブログの識別子にしたいと思います。

【手順1:.htaccessの設定】
まず、.htaccessでスラッシュの後ろの文字列をindex.phpに渡すようにします。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?id=$1 [L,QSA]

【手順2:index.phpの作成】
受け取った文字列を記事のURLに変換して、リダイレクトします。
受け取る文字列は、62進数になっているので、10進数にしたあと、ゼロパディングします。

<?
require_once "BaseConvert.inc.php"; //BaceConvertをインクルード
$id=$_GET[id]; //受け取った文字列を変数$idに入れる
$blog=substr($id,0,1); //文字列の最初はブログの識別子に使っている
$item=BaseConvert::convert(substr($id,1), 62, 10); //2文字目以降を10進数へ
$url="http://www.tpot.tk/"; //デフォルトのURLを指定

if ($blog == "e") //ブログの識別子がeのとき
{
$url=sprintf("http://e.tpot.tk/a/%06d.html",$item); //URLを生成
}

header("HTTP/1.1 301 Moved Permanently"); //このように指定すると受け渡しの扱いになる
header("Location: $url"); //URLへ飛ぶ

?>

【手順3:MovableTypeの設定】
短縮URLを生成する。PHPを使うので、PHPで動作するようにしている。
プラグインを作るのもいいかもしれない。

http://tpot.tk/e<?php
require_once "BaseConvert.inc.php";
$item=BaseConvert::convert(<$MTEntryID$>, 10, 62);
print $item;
?>

リンクソース

  • 記事用リンクソース:
  • Wiki用リンクソース(PukiWiki):
  • Wiki用リンクソース(MediaWiki):
  • SNS投稿用: