「究極の」アンチホットリンク.htaccessを記述しようとしています...
あなたはネット上で多くの例/チュートリアル / ジェネレータを見つけることができますが、それらの多くは間違っているか不完全です(あるいはその両方です)。
これらは私が探している機能です:
- HTTP_REFERERが外部サイトである場合、ファイル拡張子のリストのホットリンクをブロックする必要があります。
- .htaccessでハードコーディングせずに、現在のドメイン(duh)のホットリンクを許可する必要があります。
- 現在のドメインでは、httpおよびhttpsで動作する必要があります。
- 現在のドメインでは、wwwあり、wwwなしで機能する必要があります。
- 例外ドメインをこれらのルールに追加できる必要があります(友人のGoogleなど)。これらのドメインは、httpおよびhttpsで、wwwありまたはwwwなしで機能する必要があります。
これは私がこれまでに達成したことです:
<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のハードコードを回避する方法は?(この.htaccessをドメインごとに変更せずにすべてのドメインに展開できると便利です。)- 私のRewriteRuleでは、右
gif|jpe?g|png|zipx?
と同等gif|jpg|jpeg|png|zip|zipx
ですか?(申し訳ありませんが正規表現ではまだ新しいです。) - 私の知らない私の.htaccessに何か悪いことを見ますか?
#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エラーを提供)が必要です。