いくつかのウェブサイトが私の画像をホットリンクしているので、自分のウェブサイトの画像へのホットリンクをブロックして防止したいと思います。
そして、.htaccess
で標準のホットリンク防止コードを使用するつもりでした:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
ただし、ブログやフォーラムのスレッドの一部は、次のような許可リストに検索エンジンを個別に追加することを提案していました。
RewriteCond %{HTTP_REFERER} !^http?://([^.]+\.)?google\. [NC]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?facebook\. [NC]
.htaccess
にホットリンク防止コードを適用するときに、すべての検索エンジンとソーシャルメディアを明示的に追加する必要がありますか?これはウェブサイトの画像のクロールに影響しますか?
または、ホットリンクから画像を保護するより良い方法はありますか?
すべての検索エンジンとソーシャルメディアを明示的に追加する必要がありますか?.
可能性があります。ただし、サードパーティ(検索エンジン/ソーシャルメディアプラットフォーム)が画像をフェッチ/キャッシュする方法によって異なります。
Google image searchが問題である場合、google.com
をReferer
として許可するには、ホットリンク保護に穴を開ける必要があります。 googlebotは最初に画像をcrawlできますが(空のReferer
をチェックする最初の条件のため)、ユーザーが「画像検索」で画像をクリックすると、 https://www.google.com/
という形式のReferer
を送信する、サイトへの直接リクエストが行われます。
RewriteCond %{HTTP_REFERER} !^http?://([^.]+\.)?google\. [NC]
むしろ重要なのは、上記の正規表現のs
にhttps
がないため、このnegated条件が常に成功し、https://www.google.com
がブロックされることです。 Googleは最近HTTPSを使用しているため、オプションのs
に?
を使用する必要はありません。 NC
フラグも必要ないと思います(不正なボットのみが大文字のHost
ヘッダーを送信します):
RewriteCond %{HTTP_REFERER} !^https://([^.]+\.)?google\.
余談:悪質なボットによってReferer
としてhttp://www.google.com
(HTTPSではなくHTTPに注意)が使用されているのを見たので、どちらかと言えば、これらをブロックする必要があります。
または、ホットリンクから画像を保護するより良い方法はありますか?
他に方法はありません。その性質上、信頼性が低く、エラーが発生しやすくなっています。
ホットリンク防止は、サイトに問題が発生し、サイトのパフォーマンスが低下したり、すべての帯域幅が消費されたりする場合にのみ実装する必要があります(または、ホットリンクeverything!)。それはあなたのSEOの面でもあなたに利益をもたらすことができます。帰属表示なしに画像をコピーして再利用する(自分が制御できない)のではなく、いくつかの画像(私がまだ管理している)をホットリンクしたサイトを使用したい。
いいえ。ホットリンクは、ユーザーが画像を読み込めないようにするだけで、帯域幅を補います。画像のディレクトリをブロックしてインデックスを作成しない限り、すべてが問題ありません。
サイドノート。ほとんどのホスティング会社には、コントロールパネルでのホットリンクを防ぐオプションがあります。