連休中に、いろいろと CakePHP の Plugin 的なパーツを作っていて、なかには管理画面が必要なものもあったりして、さらに、その管理画面から外部リンクをはりたいものがあったりもすると、ちょっと悩む。
悩み事
管理画面から直接外部リンクをはると、管理画面のURLがリファラとして渡されてしまう。
管理画面のURLは、第三者にはあまり知られたくない。
自作でリンククッションを作るのが手っ取り早い。
リンククッションだからという理由でドメインごとアクセスブロックされるのも困る。
リファラは空にしておく必要がある。
作ったもの
以上の悩みを解決するために作ったのが、リファラをクリアする機能付きのリンククッション。
付属物としてリファラチェックページ。
My Utility-リンククッション
My Utility-リファラチェック
ひっかかったところ
get で URL をパラメータとして渡す場合。
URL エンコードは、mod_rewrite + Apache 1.3 の組み合わせで2回?
URLエンコード を用いたURLを mod_rewrite で制御しようとすると404エラーなどになる。
Apacheのログでもそれは確認できる。
どうやら Apache 1.3 であることも問題らしい。
URLエンコードがなぜか勝手にデコードされている様子。この問題の解決は簡単である。
単純にURLエンコードを二回かければ解決できる。URLエンコード with mod_rewrite in Apache 1.3 – Minase’s Blog – FYA
さらに、CakePHP がプラスされると?3回必要。
URL エンコードを3回かけると、渡されるパラメータは1回 URL エンコードした状態になっている。
パラメータとして渡されるまでに、URLデコードが2回行われているようだ。どの段階かは未調査。
参考
ドジっ子Watcher リンク禁止厨対策にリンククッション(リファラ消し付)
リファラ実験 – referrer test
Operaでリファラ消し :: てくてく糸巻き
作った後気づいたこと
はてブなんかのソーシャルブックマークの個別のページ(エントリページ?)はその記事に飛ぶリンクがあるからリンククッションとして使うことができたなーとか。
はてなブックマーク – zontheworld
livedoor クリップ – zontheworld
それだと、ソーシャルブックマーク先にはリファラが知られるから、簡単な個人用ブックマークサイトを作って、実はリンククッションとしても使うみたいなのもありかなーとか。
トラックバック一覧
この記事にはトラックバックがついていません。