WordPressに限らないですが、サイトを運営していると、画像に直リンクをはられることがありますよね。リンクしてくれるのは嬉しいけど、画像だけ持っていかれるのは負担になるけど自分にはメリットないし…ということで、それを禁止する方法を探しました。
2つの選択肢
ちなみに、直リンクのことをHotLink(ホットリンク)と呼ぶみたいです。じゃあColdLinkってのもあるんですかね。(コールドリンクはリンクと呼べるのだろうか?)
で、WordPressの場合、ホットリンク禁止には2つの選択肢があります。
- プラグインで対応
- .htaccessで対応
私はあんまりプラグインを増やしたくないので、2番目の.htaccessの方で対応しました。(その方が勉強になるかな、というのもありました)
.htaccessが使えなかったり、それよくわかんないな、という場合はプラグイン対応でもいいかもしれないですね!
プラグイン「Hot Linked Image Cacher」の導入
ひとつはWordPressのプラグインを利用する方法です。プラグインの名前は「Hot Linked Image Cacher」というやつです。
これは使わなかったので、名前の記載だけで。
ちなみに、これを一度利用し始めると、その後使わなくなった時に問題が起きるみたいなので注意です!
.htaccessを変更
こちらの方は.htaccessに以下の文を追加してあげればOKです。WordPressのルートディレクトリの場合は、既に.htaccessがあって、いろいろ書いてあったりするので、それは消さずに下に追記してあげればきちんと動きました!
以下の設定例は『gif,png,jpgファイルに関しては、リファラの値が「tazakazushi.net」かnullの場合にだけ、参照OKにする』という意味の設定です。
# Image Hotlink Forbidden <Files ~ "\.(gif|png|jpg)$"> SetEnvIf Referer "^http://tazakazushi\.net" ShowOK SetEnvIf Referer "^$" ShowOK order deny,allow deny from all allow from env=ShowOK </Files>
2行目で直リンク禁止にするファイルの拡張子を指定してあげて、3行目で許可するドメインを指定してあげます。複数のドメインに許可する場合は以下のように3行目を増やしてあげればOK。ShowOKというのはどんな文字列でもOKです。たぶん。
「SetEnvIf Referer ○○ ShowOK」で「もし(if)リファラー(Referer)が○○ならば、env変数にShowOKという文字列を代入(set)しなさい。」という意味ですね。
# Image Hotlink Forbidden <Files ~ "\.(gif|png|jpg)$"> SetEnvIf Referer "^http://tazakazushi\.net" ShowOK SetEnvIf Referer "^http://www.tazakazushi\.net" ShowOK SetEnvIf Referer "^$" ShowOK order deny,allow deny from all allow from env=ShowOK </Files>
ちなみに、4行目の「”^$”」というのはRefererの値がnullの場合にもOKだよ!ということを示しています。この書き方に関しては正規表現ってやつなので、詳しくは正規表現を調べて下さい。(ドットの前にが\ついているのも正規表現のせいです。)
余談(よだん)
かつてグルーポンのおせち事件の時に貼っていた画像がまとめサイトか何かに使用されたことがありました。その時に直リンクをはられており、いまでも時々アクセスがあります(笑)これを機に404見つかりませんから、401forbiddenに変更です(*´・д・)笑