WordPress でアップロードした画像への直リンクを禁止する方法

pakutaso001

ブログを運営する上で困ることの1つである画像の直リンク。自分がアップロードした画像の URL を直接参照されるため、自身がお金を掛けて借りているサーバーの資源を他人に無断使用されているのと同じ状態となります。

このような自体を招く原因は、キュレーションサイトやバイラルメディアが増え、自分の利益の為に、全く悪びれず引用だけで構成されるゴミ記事が量産されるようになったことと、その影響によって個人で運営しているサイトであっても、画像検索結果に出てきたものはそのまま使って良いと考えている非常識な人が増えていることにあります。

直リンクされているか否かは、自らエゴサーチをするかアクセス解析して見つけるしか方法がありません。僕の場合は、アクセス解析から偶然見つけましたが、自分が撮った写真を記事の一部として何事もなく使われているのを知った時は、ただただショックでした。

サイト管理者に直接連絡を取る手段もなかったので、.htaccess ファイルを作成し、画像の直リンクを完全にシャットアウトするべく対策を講じました。

WordPress で外部から画像への直リンクを禁止する方法

直リンクを禁じるには WordPress のプラグインで対処することはできません。プラグインはあくまで WordPress が動いている環境下において機能するものなので、画像ファイルにダイレクトにアクセスされた場合は、プラグインのプログラムを動かすことができないのです。

直リンクを禁止するまでの手順は次の通りです。

  1. テキストエディタを開く
  2. 画像への直リンク禁止の記述を行う
  3. ファイル名を .htaccess として保存
  4. サーバーの画像フォルダに .htaccess をアップロードする

テキストエディタを開き直リンク記述処理を書く

テキストエディタを開き、以下の記述を行ってください。# で始まる行はコメントとして扱われるので、そのままコピペして利用いただいても構いません。URL の部分は自身のサイトに合わせて書き換えてください。

# URL 書き換え処理を ON にする
RewriteEngine on
# 画像へのリンクを許可するサイトを記載
# 複数ある場合は行を分けて書く
RewriteCond %{HTTP_REFERER} !^http(s)?://nj-clucker.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
# SNS からの画像参照を許可
RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC]
# bot のアクセスを許可
RewriteCond %{HTTP_USER_AGENT} !(|googlebot|yahoo|bingbot) [NC]
# 直リンク禁止ファイルアクセス時にエラーを返す
RewriteRule \.(jpg|png|gif)$ - [F]

では一行ずつ説明していきましょう。

まずは RewriteEngine と呼ばれるアドレスの書き換え機能を有効化します。

# URL 書き換え処理を ON にする
RewriteEngine on

これは必ず一番最初に記述してください。

続いて、画像表示を許容するアクセス元のアドレス、もしくはアドレスの一部を記載します。(リファラーで判断します。)

# 画像へのリンクを許可するサイトを記載
# 複数ある場合は行を分けて書く
RewriteCond %{HTTP_REFERER} !^http(s)?://nj-clucker.com [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !bing\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]

自身のサイトも記載しないと画像が表示されなくなるため注意してください。上記のように何行でも追加することができます。google や yahoo、bing の記述部分は、検索サイトの画像検索において表示することを許可することを示します。

もし画像検索の結果にも表示させたくないのであれば、これらの行を削除してください。最後の search\?q=cache は、検索サイトのキャッシュ表示時に画像表示を許可するか否かを識別するものです。こちらもキャッシュ表示時に画像を表示させないのであれば削除しましょう。

上記の記述では、アクセス元が無い場合も NG としているため、アドレスバーに直接画像の URL を入力してアクセスしても表示されなくなります。もし直接入力を許可するのであれば、次の内容を間に追記してください。

# アドレスバー直打ち(リファラーなし)を許容
RewriteCond %{HTTP_REFERER} !^$

https から始まるサイトから直リンクされた場合、リファラー情報がないため、この条件に合致して直リンクが許容されてしまいます。リファラーなしのサイトからのアクセスも増えているため、個人的にはこの記述を書かないことをおすすめします。

続いて SNS からのアクセスを許可する設定です。Facebook や Twitter、Google+ に投稿した際に、カード形式で表示できるようにするには画像へのアクセスを許可しておく必要があります。こちらは許可しておかないと、逆に自分にとってマイナスになるので、必ず許可しておくようにしましょう。

# SNS からの画像参照を許可
RewriteCond %{HTTP_USER_AGENT} !(twitter|facebookexternalhit|google) [NC]

そして検索サイトの bot を許容する設定です。大手検索サイトへの画像掲載は、メリットもあるので設定しておいた方が+に転じてくれます。どうしても画像をパクられたくなければ、消してしまっても構いません。

# bot のアクセスを許可
RewriteCond %{HTTP_USER_AGENT} !(|googlebot|yahoo|bingbot) [NC]

最後に条件を満たしたサイトに対して、直リンクを禁止する対象ファイルの情報を明記します。

# 直リンク禁止ファイルアクセス時にエラーを返す
RewriteRule \.(jpg|png|gif)$ - [F]

RewriteRule は必ず一番最後に記述してください。この例では、拡張子が jpg、png、gif の場合に 403 エラーを返す仕組みになります。処理上エラーとなるので、直リンクしているサイト上には何も表示されなくなります。

直リンクされた場合に別の画像に差し替える方法

一番最後の RewriteRule を書き換えることで、エラーを返却せず、任意の画像を表示させることが可能になります。例えば、直リンクで貼り付けられた画像を、次の画像に差し替える設定を見ていきましょう。

ng

ファイルの URL は「http://nj-clucker.com/img/ng.png」になります。差し替え対象の画像は各々用意してください。WordPress のアップロード機能を使ってファイルをアップしていただいて構いません。画像ファイルのアドレスだけメモしておいてください。

前述の内容の最終行にある RewriteCond で始まる行を次のように書き換えます。

# 直リンク時に指定の画像を表示する
RewriteCond %{REQUEST_URI} !^http://nj-clucker\.com/img/ng\.png$
RewriteRule \.(jpg|png|gif)$ http://nj-clucker.com/img/ng.png [NC,R,L]

RewriteCond の設定により、対象の画像への直リンクは OK としておきます。この時、アドレス内にある全てのドット(ピリオド)の手前に、半角の円マーク「\」を付けるのを忘れないでください。ここだけアドレスの記述ルールが異なります。

そして最後に RewriteRule として jpg、png、gif の画像ファイルに直リンクしている場合、ng.png ファイルを表示するように処理を書けば完成です。

名前を付けてファイルを保存

保存するファイル名は「.htaccess」としてください。Windows の場合、ドットから始まるファイル名を作成するには、テキストエディタの保存時に名前を付けるしか方法が無いので注意してください。

サーバーに .htaccess をアップロード

作成したファイルを WordPress がインストールされているサーバーの画像フォルダにアップロードします。通常の設定であれば、画像ファイルを保存しているフォルダは以下のパスになります。月別にフォルダが別れている場合でも、uploads フォルダ直下に .htaccess ファイルを置いておけば、下位の全てのフォルダに適用されます。

(WordPressインストール先)\wp-content\uploads

既に .htaccess のファイルがある場合は、そのファイルを上書きせず、その中に書いてある処理の下に追記した上でアップロードするようにしましょう。

以上、WordPress でアップロードした画像への直リンクを禁止する方法でした。

2017/01/22

個人事業主の開業届と青色申告の申請書を税務署へ提出!持ち物はマイナンバーカードを忘れずに!

2017/01/21

Chrome に表示された「保護された通信」「保護されない通信」とは?保護されないのは危険なのか?

2017/01/21

Word ファイルから画質を落とさず画像を取り出す方法

2017/01/20

Windows 10 でアプリをアンインストール(削除)する方法

2017/01/20

Windows 10 でデスクトップにマイコンピューターやコントロールパネルを表示する方法

2017/01/20

ファイアーエムブレムヒーローズのダウンロード方法とインストール手順【初期設定】

2017/01/17

青色申告の申請書「所得税の青色申告承認申請書」の書き方!例にならって入力すれば簡単に作成できる

2017/01/16

個人事業の開業届の書き方!例にならって入力すれば簡単に作成できる

2017/01/14

Nintendo Switch のコントローラーの充電方法は?標準の Joy-Con グリップでは充電できないので注意!

2017/01/14

Nintendo Switch の本体容量は 32GB しかない!容量追加はマイクロSDカードを利用する

→もっと見る

Name :
気力/体力勝負なシステム業界で揉まれています。自分が自分らしくあるために、大事なリセット、スタートします。

プロフィール詳細 Twitter @_NJ69_
Facebook ページ nj-clucker.com シェア
このブログが役に立ったら
「いいね!」お願いします
PAGE TOP ↑