短縮URLとかリダイレクトとか

前回
http://d.hatena.ne.jp/mitaina/20090624/1245820659
RSSにアンパサンド(&)を書けないという問題で解決法に悩みました。


結局何が筋か私にはわかりませんでした。
したがって不具合かどうかもわかりません。
そのため、先方には修繕依頼というより現象の報告だけしてみました。


2時間あまりで前向きな回答をいただいたので、期待していいかもしれません。
しかしこの問題は他でも起こりえます。
そこで短縮URLとかリダイレクトの方法を考えてみることにしました。


TinyURLも考えました。
しかし外部のサービスをつかってサーバが落ちたり廃止になった時には対処できません。
可能性が低いとはいえ、外部に委ねるのはコワイ。


それに事前にリダイレクト用の文字列とリダイレクト先URLのリストを準備するのは面倒です。
一応mod rewriteを使おうかと思いました。
しかし使えないサーバに移ることができなくなるので却下。専用サーバいいなぁ


そこでPHPでいこうと思いました。そしてぐぐる


▽URLを短くするサービスを提供できるPHPスクリプト「Phurl」:phpspot開発日誌
 http://phpspot.org/blog/archives/2009/01/urlphpphurl.html


こういうのもあるんですね。
けど私の用途では、そこまで大げさにすることはないみたいです。


PHPによるリダイレクト
 http://afiliate.livedoor.biz/archives/51014849.html


PHPはなんでもありますね、本当に(^^;
header()を使えばよいと。


PHP: header Manual
 http://www.php.net/manual/ja/function.header.php



あとは上記記事にあるように、GETで送信された文字列を受け取って、適当に置き換えれば、リダイレクトできますね。



この場合、アクセス状況はApacheのログに残ります。
そこでカウントについてはログを解析した方が楽そうです。
これぐらいならさほど負荷はかからない気がするけど、どうなんでしょう。


念のためサブドメインというか別ホストにしておくと、負荷が上がったときに楽かも?





.htaccessRedirectMatchという手もあるんですね。


正規表現使えるのはすごい!
ただGETメソッドのパラメータを受け取る点に問題があるらしいです。


うーん。
まぁGET使わないためにリダイレクトかますんだから問題ないか。


PHP使わずにできるなら、これで済ませておくのがラクチンですね。

http://example.com/item/10/20

的な書式にしておけば、PHP使う必要がでても、path_info使えば対応可能だし
(念のため確認したけど、今使っているサーバでpath_infoは使えました。使えないという情報も見かけたんだけど)


.htaccessでリダイレクト機能を使用する方法
 http://www.shtml.jp/htaccess/redirect.html


▽Tips/WEBSYS/Apache/RedirectMatchとReWriteEngine
 http://wonderrabbitproject.net/?Tips%2FWEBSYS%2FApache%2FRedirectMatch%E3%81%A8ReWriteEngine


▽htaccessを使ったリダイレクトについて知識のある方教えてください!!
 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1127434801


▽RedirectMatch ディレクティブ
 http://httpd.apache.org/docs/2.0/ja/mod/mod_alias.html#redirectmatch