5行のコードでWordPressの画像直リンクを撃退する方法

※記事内に商品プロモーションを含む場合があります

時々来る、迷惑なアクセス画像への直接アクセス。

画像直リンク禁止

BLOGEでは画像直リンクで来た場合直リンク禁止ページを表示する様にしています。

画像直リンクとは

ブログやサイトの画像へ他サイトが直接リンクを貼る事。
画像だけ抜き出すのでアクセス解析でも分からないので迷惑です。
なのでBLOGEでは.htaccessを使ってリダイレクトする様にしています。

直リンクの判別に使われるリファラー

直リンクかサイト内のリンクかはリファラーを見て判別します。
BLOGEの場合、URLにb.eax.jpがあったら画像を表示して
違う場合は画像を表示せず、直リンク禁止ページを表示します。

ただし、注意が必要なのはリファラー無しの場合。
多くの場合、アドレスバーに入力して直接アクセスするのですが、
頭の良いサイトはリファラーを消して表示できる様にしてあります。

WordPressプラグインでは?

基本的にプラグインでは対処出来ません。

理由はファイルが存在するからです。
ファイルが存在しない場合はWordpressの/index.phpに処理が渡りますが、
画像ファイルが存在する場合はWordpressに処理を渡さずに画像を表示して
終わってしまいます。

なのでApache側で動く.htaccessを使います。

直リンクを禁止する5行のコード

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://b.eax.jp/ [NC]
RewriteRule ^(.*)\.(jpg|png)$ https://b.eax.jp/dlink/ [R=301,L]

解説

BLOGEを例に解説します。

RewriteEngine On
RewriteEngine をOnにします。

RewriteBase /
リライトベースを設定します。このスラッシュだけの場合https://b.eax.jp/下となります。

RewriteCond %{HTTP_REFERER} !^$
リファラーが無い場合はアクセスを許可します。
上にある様に、リファラー無しの場合も拒否したければこの行は消します。

RewriteCond %{HTTP_REFERER} !^https://b.eax.jp/ [NC]
URLにhttps://b.eax.jp/を含むページから参照された場合は表示を許可します。
後ろのNCは大文字小文字を区別せず判別します。

RewriteRule ^(.*)\.(jpg|png)$ https://b.eax.jp/dlink/ [R=301,L]
リライトルールの設定、jpgとpngファイルへアクセスがあった場合、
https://b.eax.jp/dlink/へリダイレクトします。
R=301は301リダイレクトを行い、Lはその場で判定を終了させます。
Lは付けた方が良さそうです。

後は自分のサイトに合わせて編集して下さい。

.htaccessのファイル名と置き場・使えるサーバ

.htaccessのファイル名は.htaccessです。
Windowsではドットより前は無しに出来ないのでアップロード後ファイル名を編集して下さい。

置き場は、リライトベースに置いて下さい。
アップロード時はアスキーモードでアップロードして下さい。

使えるサーバーはApacheを使っているサーバーです。
nginxやIISなどのサーバーでは使えません、Apache(アパッチ)限定です。

使えるレンタルサーバーはさくらやロリポップであれば使えると思います。
ただし、レンタルサーバーの中には.htaccessの使用を許可してない場合が
あるので注意して下さい。

まとめ

直接アクセス(リファラー無し)も表示したく無い場合は3行目は削除して下さい。

ただし、まとめブログなどに画像URLのみ載ると画像アクセスが増えて
記事へアクセスされないので、特定の画像から記事へ飛ばす記事を次は書きます。

以上、@eaxjpでした!