私はApacheを使用していますが、Local HostにサンプルのWebフォルダーがあります。
http://localhost/test/
test
フォルダー内のファイル:
index.html
sample.jpg
.htaccess
index.html
のサンプルソース:
<html>
<body>
<img src="sample.jpg" />
</body>
</html>
http://localhost/test/
でWebサイトを実行すると、単にページに画像「sample.jpg」が表示されます。
問題:
http://localhost/test/sample.jpg
として直接表示される画像を防ぎたい。注:すべてのブラウザーでテストすると、以下のソリューションが機能することがわかりましたFirefoxを除く。
以下を試してください:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
画像に直接アクセスする場合は403を返しますが、サイトに表示することはできます。
注:画像を含むページを開いて、その画像のパスをアドレスバーにコピーすると、その画像が表示される場合があります。これは、ブラウザのキャッシュが原因で、実際には画像がサーバーからロードされていません(Davoから、以下の完全なコメント)。
rosipovのルールはうまくいきます!
私はライブサイトでそれを使用して、空のファイルまたは特別なメッセージを表示します;)直接ビューから少し保護するために、ファイルへの直接アクセスの試みの代わりに。 403 Forbiddenよりも楽しいと思う。
したがって、rosipovのルールを使用して、directリクエストを{gif、jpg、js、txt}ファイルにリダイレクトして、 'messageforcurious'にリダイレクトします。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC]
RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L]
たとえば、CMS sensible files xml、javascriptのようなセキュリティへの直接アクセスを禁止する丁寧な方法だと考えています。彼らのアルゴリズムは、私の「messageforcurious」から作成されます。
まず、メインのApacheの構成ファイルhttpd.confの場所を見つけます。 Debianを使用している場合は、/etc/Apache/httpd.conf
にあるはずです。 VimやNanoなどのファイルエディターを使用してこのファイルを開き、次のような行を見つけます。
Options Includes Indexes FollowSymLinks MultiViews
次に、Wordインデックスを削除してファイルを保存します。行は次のようになります。
Options Includes FollowSymLinks MultiViews
完了したら、Apacheを再起動します(例:Debianの/etc/init.d/Apache restart)。それでおしまい!
あなたのコメントに基づいて、これがあなたが必要なもののように見えます:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]
ローカルホストでテストしましたが、うまく機能しているようです。
Webサーバーで使用した場合、次のようにローカルホストの名前のみ変更できます。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]