ウェブサイトやブログを運営していると、画像が直リンクされることがあります。
画像の直リンクは、画像の無断使用でもあり、他人の画像をパクる時の常套手段です。
先日、僕のサイトの画像が直リンクでパクられる事件が起こりました。対応策を練るために、本業がネットワークエンジニアで、Google公式プロダクトフォーラムのエキスパートとして活躍している友だちに相談しました。さすが本職のネットワークエンジニアです。僕の質問にはすべて即答で回答してくれました。同じような悩みを抱えている方は多いと思いますので、みなさまに紹介します。
今日のエントリーは、「リファラで、特定のURLから画像の直リンクを禁止する方法」について紹介します。
リファラを使って遷移元のURLを判別し、特定のURLから画像の直リンクを禁止する方法
リファラを使えば、遷移元のURLを判別し、特定のURLから画像の直リンクを禁止できます。制御は.htaccessを利用します。
リファラとは、ユーザーがサイトにアクセスする際、参照元となる元ページの情報のことを指します。リファラを参照すると、どのページからアクセスがあったのかが分かります。
リファラを使って遷移元のURLを判別すれば、特定のURLから画像の直リンクを禁止することができるのです。
この方法は、特定のサイトから画像が直リンクされていることが発覚した場合に有効です。画像の直リンクをした特定のサイトから、ご自身のサイトの画像へのアクセスを制限するのです。
次のコードを.htaccessに記述します。example.comの部分を、画像の直リンクを禁止したいサイトのURLに変更してください。
SetEnvIf Referer "^http://example\.com" chk_url SetEnvIf Referer "^https://example\.com" chk_url <Files ~ "\.(gif|jpg|jpeg|png)$"> order allow,deny allow from all deny from env=chk_url </Files>
このコードを記述すれば、画像の直リンクをしている特定のサイト (example.com) には、画像の直リンクを禁止できるので、直リンクされた画像が表示されなくなります。
とはいえ、リファラは偽装できるので完璧ではないことは頭に入れておきましょう。
全てのURLから画像の直リンクを禁止したらダメなの?
画像の直リンクを禁止したいのであれば、全てのサイトから画像の直リンクを禁止したいですよね?その気持ちは分かります。
でも、結論から先に言うと、全てのURLから画像の直リンクを禁止するのはダメです。
全てのサイトから画像の直リンクを禁止すると、誰もその画像にアクセスできなくなってしまうからです。また、Google botなどのクローラも画像にアクセスできなくなり、Google画像検索にも表示されなくなってしまいます。
もちろん、自分のサイトやGoogle、Yahoo、Bingを許可ドメインに加えることもできますが、大多数の方がその画像を見れなくなってしまうので、オススメできません。
画像が直リンクされた場合のみ、表示できなくなる仕様を望む
他人のサイトで画像が直リンクされた場合のみ画像を非表示、Google botなどは問題なくアクセスでき、自分のサイトの画像は誰でも見れるという仕様が.htaccessで実装できればいいんだけど、現実的には難しそうです。
さいごに
以上、リファラで、特定のURLから画像の直リンクを禁止する方法でした。
ネット上のマナーとして、画像の直リンクはしないのが暗黙のルールだったりするのですが、そんなことはお構いなしに画像の直リンクをする人はいます。自分のサイトで使う画像は、直リンクしないで自分で撮影すればいいのにと思っているのは僕だけではないはず。
なぜ画像の直リンクがマナー違反かと言うと、画像が無断使用されるだけでなく、画像が置いてあるサーバの転送量を消費するためです。同じリンクでも記事の紹介リンクは嬉しいですが、画像の直リンクは全く嬉しくないですよね。
ご自身のサイトやブログの画像が直リンクされた際は、.htaccessを利用してリファラで、特定のURLから画像の直リンクを禁止することをオススメします。
ナレッジ