記述場所 |
記述内容 |
.htaccess |
# 画像ファイルへのリンクを禁止
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?abhp\.net [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !google. [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteCond %{HTTP_REFERER} !bing. [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteRule .(jpg|png|gif|pdf|svg|js|css)$ – [NC,F,L] |
説明 |
「 .htaccess 」 ファイル |
|
「 .htaccess 」 ファイルは、サイトのルートディレクトリに配置しておくと、配下のディレクトリにも効果がおよびます
「 .htaccess 」 ファイル内に、テキストエディタで、「記述内容」を記述します
「 # 」 以降の記述は、コメントになります |
ewriteEngine on |
|
「 RewriteEngine 」 は、Apache サーバーの 「 mod_rewrite 」 モジュールを利用しますという宣言文で、「 RewriteEngine
」 が提供する機能を利用する際に記述します
RewriteEngine on / RewriteEngine off |
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?abhp\.net [NC] |
|
自サイトなど、ファイルへのアクセスを許可するドメインを記述、アクセスを許可するドメインが複数ある場合、本行を複数行記述します
URLを記述する際は、「https://」から記述し、先頭に、半角の「^」(ハット記号)を、「.」(ドット記号)には、「\」のように半角の「\」(バックスラッシュ)を前に加える必要があります
当サイトのドメインは、「 abhp.net 」 ですが、先頭に 「 www 」 を付けてもアクセスできますので、「 (www\.)?abhp\.net
」 との記述になっています
「(s)?」、「(www\.)」 は、指定されても、省略されてもアクセスできるようにする設定です |
RewriteCond %{HTTP_REFERER} !^$ |
|
正規表現で、「^」は先頭を、「$」は末尾を表し、先頭と末尾の間に文字列が無いので、「ブランク」という意味になります
ファイアウォールやプロキシ等で、リファラ(HTTP_REFERER)※情報がブランクされていた場合でも、アクセスを許可します
1.セキュリティソフト利用者への対処
ブラウザがウェブサーバに対してReferer情報を提供するのを阻止するセキュリティソフトがあり、そのようなユーザに対しては、アクセスを許可して良いはずの場面でアクセスを拒否してしまうのを防ぐために、Referer情報が得られなかった場合には無条件で許可するようにします
2.URLを直接アドレス欄に打ち込んでアクセスした場合への対処
直リンクを防ぐのが目的ですので、URLを直接入力してアクセスされた場合には許可する必要があります(※URLを直接入力した場合は、「直前にアクセスしたページはない」ので、Referer情報がありません) |
RewriteCond %{HTTP_REFERER} !google. [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteCond %{HTTP_REFERER} !bing. [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC] |
|
google、yahoo 等、各検索エンジンや、画像検索時のアクセスを許可します
リファラ※に「google」や「yahoo」 等の文字列を含んでいる場合アクセスを許可するという指定です |
RewriteRule \.(jpg|png|gif|pdf|svg|js|css)$ – [NC,F,L] |
|
RewriteRuleは、URLを書き換えるための指示子です
直接アクセスを禁止するファイル種別を、ファイルの拡張子で指定します
「.jpg」、「.png」、「.gif」、「.pdf」、「.svg」、「.js」、「.css」、各拡張子ファイルへの直接アクセスを禁止しています |
[NC] オプション |
|
nocase(no case)
大文字と小文字を区別しないようにします (どちらも同じに扱う) |
[F] オプション |
|
forbidden(force URL to be forbidden)
HTTPレスポンスの 「 403 (Forbidden) 」 を返します
HTTPレスポンスの 「 403 」 はアクセス権限がないことを示し、強制的にアクセス禁止という意味になります |
[L] オプション |
|
last(last rule)
Rewrite機能によるURL変換を終了します
書き換えた URL が後に続くルールによって、これ以上書き換えられることがないように指定します |