スポンサードリンク

【mod_rewrite】画像の直リンクを禁止する

mod_rewriteを使用して、画像の直リンクを禁止する方法を説明しています。

スポンサードリンク

画像の直リンクを禁止する

他サイトに自分のサイトの画像を無断で使用されたくない場合は、以下を記述した.htaccessを設置すると、いわゆる画像の直リンクを阻止することができます。

なお、「○○○.com」の部分は自分のサイトのドメインに書き換えてください。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?○○○.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

上の記述では、

  • 参照元がなしではない(参照元がある)
  • 参照元が自分のサイトではない
  • 参照元がgoogleではない
  • 参照元がbingではない
  • 参照元がYahooではない

以上の条件を全てもつ画像(拡張子がjpg、jpeg、png、gifのファイル)へのアクセスに403エラーを返します。

つまり、参照元があって、その参照元が自分のサイト・Google・Yahoo・bingではない場合、画像ファイルの表示を禁止させます。

もっというならば、Google・Yahoo・bingの参照元は許可するので、画像検索にも影響を与えず画像の直リンクを禁止できます。

解説

参照元がない場合

ユーザーがURL直打ちで画像を閲覧する場合や、検索エンジンの画像収集ロボットが画像にアクセスするときは参照元がありません。

参照元がない場合、上の最初のRewriteCondのサーバ変数「%{HTTP_REFERER}」には何も渡されず、条件パターンである「参照元がなしではない」とマッチングしません。

つまり、RewriteCondのルール条件を満たさないので、RewriteRuleは適用されません。

他人のサイトの参照元がある場合

他人のサイト(例:http://□□□.com/hoge.html)にimgタグで自サイトの画像を埋め込まれた場合、参照元は他人のサイト(http://□□□.com/hoge.html)となります。

この場合、

  • 参照元がなしではない(参照元がある)
  • 参照元が自分のサイトではない
  • 参照元がgoogleではない
  • 参照元がbingではない
  • 参照元がYahooではない

とすべてのRewriteCondの条件を満たすので、RewriteRuleが適用され、画像へのアクセスを全て遮断できます。

備考

上の記述は、mod_rewriteRewriteRuleRewriteCondを把握していないと理解は厳しいです。

また、フラグ正規表現も把握しておく必要があります。


Warning: count(): Parameter must be an array or an object that implements Countable in /home/yskymk/www/000web/ysklog/mod-rewrite/wp-includes/class-wp-comment-query.php on line 405

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント