短縮URLとかリダイレクトとか
前回
http://d.hatena.ne.jp/mitaina/20090624/1245820659
RSSにアンパサンド(&)を書けないという問題で解決法に悩みました。
結局何が筋か私にはわかりませんでした。
したがって不具合かどうかもわかりません。
そのため、先方には修繕依頼というより現象の報告だけしてみました。
2時間あまりで前向きな回答をいただいたので、期待していいかもしれません。
しかしこの問題は他でも起こりえます。
そこで短縮URLとかリダイレクトの方法を考えてみることにしました。
TinyURLも考えました。
しかし外部のサービスをつかってサーバが落ちたり廃止になった時には対処できません。
可能性が低いとはいえ、外部に委ねるのはコワイ。
それに事前にリダイレクト用の文字列とリダイレクト先URLのリストを準備するのは面倒です。
一応mod rewriteを使おうかと思いました。
しかし使えないサーバに移ることができなくなるので却下。専用サーバいいなぁ
▽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のログに残ります。
そこでカウントについてはログを解析した方が楽そうです。
これぐらいならさほど負荷はかからない気がするけど、どうなんでしょう。
念のためサブドメインというか別ホストにしておくと、負荷が上がったときに楽かも?
.htaccessでRedirectMatchという手もあるんですね。
正規表現使えるのはすごい!
ただGETメソッドのパラメータを受け取る点に問題があるらしいです。
うーん。
まぁGET使わないためにリダイレクトかますんだから問題ないか。
PHP使わずにできるなら、これで済ませておくのがラクチンですね。
的な書式にしておけば、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