Skip to main content

ログ取得ツール (移転先予定地)

Referer制限、その他

ちょいとローカルキャッシュの扱いを変えてみました。

というのはローカルキャッシュ(URLで言えば/blog/down/以下)はこのサイトのコンテンツではないので、直接外から利用されることは想定していない。しかしながら検索エンジン等からローカルキャッシュ以下を拾ってきて、それを独自のコンテンツだと勘違いした人が外から直接リンクを張るというケースがあるような感じがしている。「感じがする」というのは弱い表現だが、誤解されるのが気持ちが悪いのは間違いない。

元はと言えば記事を引用してもそのうち元記事が読めなくなってしまうことが多いのが悲しくてローカルキャッシュをはじめたのだが、元のサイトと勘違いされるのは困ると思っていた。あ、いや、私よりも引用元のサイトの人が困るはずだな。私も困るけど。

そこで、Referer制限をかけてみた。こういう姑息な制限は好きではないのでなんかちょっと残念だがしょうがない。問題はRefererをつけないように設定されたクライアント(ちなみに私もそうしている)だが、これもダメとした。自分に厳しく(笑)。まあでも、Refererは詐称も自在にできるので、アクセス制限と言っても全く読めなくしたわけではない。

本当はそのURLにリンクしている記事を表示してそっちから入ってもらうというのが良いのかとも考えたが、そこまですることもないと思い直した。最初はSetEnvIfでRefererを見てallow/denyという、要はただのForbiddenにしようとしていたが、さすがにそれは芸がないのでmod_rewriteを使って本当のURLに飛ばしてあげることにした。

これで、迷い込んできた人々が正しく誘導され、敢えて入ってきた人が確実に引用元を読めることを願う。

ちなみに、.htaccessの該当部分の設定はこうです。少しは何かの参考になりますかどうか…

RewriteEngine on
RewriteCond %{HTTP_REFERER} !wtnb.mydns.jp [NC]
#RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^([0-9]*/)?(.*)$ http://$2

(追記) 2004-02-14 11:08

ログでこの条件が正しいか、転送されている(302)を確認してみたら、googleのキャッシュから飛んでくる人はRefererに"wtnb.mydns.jp"の文字があるのでOKになっていた。そこで、式を"^https?://wtnb.mydns.jp"にしてみました。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^https?:wtnb\.mydns\.jp [NC]
#RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^([0-9]*/)?(.*)$ http://$2

って感じ。