サイトアイコン Gatespace's Blog

画像への直リンクを防ぐ .htaccess

この記事をシェアする

WordPressで会員制サイトを作成して、記事やRSS、添付ファイルのダウンロードについては制限をかけられたのですが、画像そのものへのアクセス(直リンク)を制限できなかったので、メモ。

元ネタは日本語フォーラムです。

.htaccessとリライトルールで制限をかけますので、条件としてmod_rewriteが使えなくてはなりませんが、WordPress以外の場合でも充分活用できます。

フォーラムのコードそのままですが、以下のようになります。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?example.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ - [NC,F,L]
</IfModule>

3行目(RewriteCond)でリファラーを取得し、指定したドメイン以外からのアクセスかどうか比較しています。

4行目 RewriteCondの条件が真の時、画像(拡張子が jpg、jpg、png、gif)は403 : Forbidden を返し終了します。

リファラをチェックしているので、投稿や固定ページあるいは.html、.cssなどのファイルから呼び出されている画像については403を返しません。

使用する際は example.com を設置するドメインに書き換えてください。
フォーラムにも書かれていますが、複数のドメインを指定したい場合は3行目をコピーして増やします。

フォーラムではKati Style使用時に携帯でのアクセス制限が上手く行かないとのことでしたが、私の場合は携帯に対応しないサイトですので検証していません。

.htaccess のリライトルールについてはこちらのサイトも参考になります。

【2012.6.29 追記】

記事公開後、知り合いからツッコミが入りました。

今回は「会員限定サイトの画像の直リンクを禁止」なので、検索エンジンは考慮していませんでした。
しかしながら、上記のような弊害もありますので、通常公開されているようなサイトには向かない手法といえます。
検索エンジン上での表示を許可するには、簡単な方法として RewriteCond を追加して、リファラーに検索エンジンのドメインが入っているかどうかをチェックすればいいと思います。

この記事をシェアする