私は「究極の」アンチホットリンク.htaccessを書き込もうとしています...
ネット上には多くの 例/チュートリアル / ジェネレーター がありますが、それらの多くは間違っているか不完全です(または両方)。
これらは私が探している機能です:
これは私がこれまでに達成したことです:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
私の質問:
mydomain.com
をハードコーディングしないようにするにはどうすればよいですか? (この.htaccessをドメインごとに変更せずに、すべてのドメインに展開できると便利です。)gif|jpe?g|png|zipx?
はgif|jpg|jpeg|png|Zip|zipx
と同等ですよね? (正規表現ではまだ新しいです。)#1の場合、それはある程度可能であると私は知っています。私が見つけた最も近いものは、ドメインをハードコーディングせずにURLからwwwを削除するこのスニペットです。私の質問#1にこの方法を使用する方法はありますか?
RewriteCond %{HTTP_Host} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
更新:
通常の画像の代わりに透かし入りの画像を提供するソリューションを知っています。しかし、私はこの種の解決策を探していません。あらゆる種類のバイナリファイル(Zip、exe、iso、jpg、png、gif)で機能するユニバーサルソリューション(403エラーを処理)が必要です。 ..)。
何をしても、CPUサイクルが「無駄に」なります(リファラーサイト(リンクを実行しているサイト)が許可されているかどうかを判断するには、要求データの処理を行う必要があります)。
実行できる唯一のことは、CPUサイクルの最小を浪費しながら帯域幅を節約することです。
Apache Docsのいくつかの例 あなたが望むことを正確に実行します。これです:
SetEnvIf Referer example\.com localreferer
<FilesMatch \.(jpg|png|gif)$>
Order deny,allow
Deny from all
Allow from env=localreferer
</FilesMatch>
最も適切なようです(そしてmod_rewriteの全重量を必要としません)。
追加のSetEnvIf
およびAllow
ディレクティブを使用して有効なリファラーを追加できます。
リファラーが不明な場合(禁止されている場合)、画像をパラメーターとして渡すPhpファイルを呼び出し、Phpファイルに大きな赤で入力するというルールを作成してはどうでしょうか。「このファイルはMYWEBSITE.COMからのものです。ここに表示する正式な許可はありません。」.
あなたの質問に関しては、あなたのルールをグローバルにしてください。私が間違っている場合は訂正してください。ただし、ルールが宣言されている場合before任意のvhostは、すべてのvhostに適用されます(「デフォルトルール」の一種)。
そして別のアイデアは単純です:Phpファイルにリダイレクトするだけです(ここではfilter.php
)許可されたWebサイトを調べて、すべて問題がない場合は必要なファイルを返します。
RewriteRule /(.*)\.jpg$ /filter.php?im=$2\.jpg [QSA,L]
filter.php
仮想ホストのリストなどを動的にロードするだけです:
if (isset($_SERVER['HTTP_Host'])) {
if ((mb_ereg('thereferers\.I\.HATE\.com',Host) !== false) ) {
... your code ...
}
}
Cloudflareはあなたにいくらかの助けになるかもしれません: http://www.cloudflare.com
ただし、これは画像に対してのみ機能しますが、それがあなたが求めているもののようです。
ホットリンク保護
画像のホットリンク保護を自動的に有効にして、オフサイトリンクを防ぎます。ゾーン内になく、空白でもないリファラーはアクセスを拒否されます。サポートされているファイル拡張子は、gif、ico、jpg、jpeg、およびpngです。
保護: http://mydomain.com/images/pic.jpg バイパスするには: http://mydomain.com/images/hotlink-ok/pic.jpg
質問1:
RewriteEngineオン
RewriteCond%{HTTP_REFERER}!^ http://(。+)?yoursite.com/ [NC]
RewriteCond%{HTTP_REFERER}!^ $
RewriteRule。*。(jpe?g | gif | bmp | png)$-[F]
質問2:
はい
質問3
私は自分のものを使います