こんにちは、さち です。
今回は、サーバーに置いてある「ファイル」に直リンク(直接リンク)してくるアクセスを拒否する方法について書いていきます。
直リンクを拒否する方法
「.htaccess」ファイルを使って、「画像」への直リンクをアクセス拒否してみます。
自分のサイトを example.com
としたとき、「.htaccess」の中身はこんな感じになります。
<FilesMatch "\.(gif|png|jpe?g|webp)$"> RewriteEngine on RewriteCond %{HTTP_REFERER} !^(https?://)?([^./?]+\.)?example\.com RewriteRule ^.*$ - [R=403,L] </FilesMatch>
アクセス元(直前に見ていた)ページの「URL」が分かるリファラ %{HTTP_REFERER}
を使って、自分のサイトのドメイン example.com
でない場合は、「アクセス拒否(403)」をしています。
仕組みとしては、以前の記事で紹介した「ファイルへのアクセスを制限する方法」と「直リンクを拒否する方法」を組み合わせたものです。
それぞれの使い方の詳細は、下記のリンク先を参考にして下さい。
→ ファイルへのアクセスを制限する方法(.htaccess)
注意点
「リファラ」は常に送られるとは限りません。
ウェブブラウザーの種類やバージョンによっては、次のような場合にリファラを取得できません(空白参照になる)。注意して下さい。
リファラを取得できないアクセス
- SSL化していない(http://)ページからのアクセス
rel="noreferrer"
が付いたリンクからのアクセス- URL を手入力してのアクセス
- ブックマークからのアクセス
特に、「SSL化していない(http://)」ページからのアクセスについては、この仕様を知らないと他に原因があると勘違いして、時間を浪費する危険があります。
多くのサーバーでは、無料で SSL(https)化できるようになっています。SSL 化していないと検索エンジンからの評価も下がりますし、この機会に SSL化 しましょう。作業は一度だけですし。
アクセス拒否時に開くページの指定
アクセス拒否(403 Forbidden)した時に代わりに開くページを指定することで、直リンクを拒否したことを知らせることもできます。
指定方法の詳細についてはこちらの記事で紹介しています。

何となくで使ってた「.htaccess」について勉強し直す
こんにちは、さち です。先日、prepreset GENERATOR でエラーが出るとコメントを頂き、修正をしていました。原因は CGI が正常動作していないことだったんですが、その原因の根源は「.htaccess」ファイルにありました。た
コメント