.htaccessで特定ファイルへのアクセスを禁止する方法

Sponsored Link


特定ファイルへのアクセスを禁止する方法


Webサーバ上に「*.bak」のようなバックアップファイルが存在する場合。もしくは、ソースコードファイルが存在する場合など、URLで直接参照できてしまいます。

そういったファイルが存在しなければ良いのですが、「.log」といったログファイルがしかたなく存在することもあります。

また、制作の過程でフォトショップの「.psd」ファイルが紛れ込むこともあるでしょう。

そういった場合、「.htaccess」に該当拡張子のファイルへのアクセスを禁止する命令を書いておくと、直接参照を禁止(403エラー:Forbidden)することができます。

<FilesMatch "(^#.*#|\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|sw[op])|~)$">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

「.txt」は含めません。robots.txt が検索エンジンのクローラーから巡回できなくなってしまいますので。

あと、「Satisfy All」はなくても動作しますが、省略せずに書いてあります。

画像ファイルへの外部からのアクセスを禁止する方法


前述の例と似たパターンで、画像を「ブラウザからの直接アクセス禁止」にする場合はどのようにするのでしょうか。

画像の場合、自ドメインのHTMLファイルからの呼び出しなら表示可能にする必要があります。

自分のページでは画像を表示しつつ、ブラウザでの直接アクセスや、画像を他のページから参照するのを拒否(403エラー)する方法は以下のとおりです。

コード1

SetEnvIf Referer "^http://www\.osumituki\.com" ok_url
<Files ~ "\.(gif|jpe?g|png|svg|css|js)$">
order deny,allow
deny from all
allow from env=ok_url
</Files>

上記だと、サブドメイン「www」がある場合のみです。
サブドメインがないURLの場合のも記述する必要があります。

コード2

SetEnvIf Referer "^http://osumituki\.com" ok_url
<Files ~ "\.(gif|jpe?g|png|svg|css|js)$">
order deny,allow
deny from all
allow from env=ok_url
</Files>

両方記述する必要があります。

いくつかのサブドメインがある場合も、以下を追記する必要があります。

コード3

SetEnvIf Referer "^(.+\.)?osumituki\.com" ok_url
<Files ~ "\.(gif|jpe?g|png|svg|css|js)$">
    order deny,allow
    deny from all
    allow from env=ok_url
</Files>

変更点は1行目のリファラーを判断する正規表現部分です。
この場合、ドメインが「http://osumituki.com/」からの画像参照でなければ、画像は「403エラー」を表示するようになります。

同じドメイン全部に対応させたいのであれば、2と3のコードを書いておけば、「www」付でも、サブドメイン無しでも、「WWW」以外のサブドメイン付でも対応可能です。

403エラーになって、画像が表示されないページが表示されるのが嫌な場合は、エラー画面に飛ばすと良いでしょう。以下のコードを「.htaccess」の最後に追記してください。

ErrorDocument 403 404.html

もちろん、404ページが必要です。

Sponsored Link

最新記事はトップページで!

京都発・地方が盛り上がるグルメや観光に撮影ロケ地の話題を提供!


購読するならRSSをご利用ください!

RSSはこちらをご利用ください。


マスコミ各社様の記事使用規約についてはこちらをご覧ください。

当ブログでは掲示板やSNSなど他メディアでURLや記事を紹介することはございませんので、掲示板などで記事を紹介されていても一切無関係です。誤解なきようお願いいたします。
当ブログで転載しているTweetはTwitter社の規約(2013/10)に準じた形式(API利用)によって許可された範囲で行われています。また、Tweet内容の所有権はTwitter社の規約によりTweet元のアカウント所有者にあります。そのため、当ブログでその所有権を主張するものではありません。Tweet内容については責任は負いませんので予めご了承ください。