htaccessを使ったアクセス制限

htaccessという特別なファイルをサーバーに置くことにより、ディレクトリの一覧を隠すとか、ファイルへの直リンク禁止にするとか、IDとパスワードで認証をするとかのアクセス制限をしたいことがよくあります。このページではアクセス制限の解説をしています。

.htaccessファイルの特徴

サーバーの写真

.htaccess ファイルは、 サーバー楽天 の動作を制御する設定ファイルで、各ユーザーが、各ディレクトリ単位で設定できる特別なテキストファイルです。

ファイル名が無く拡張子のみのファイルです。テキストファイルの為、FTPでのアップロードはテキストモードで行なう必要があります。

.htaccess ファイルは、設置したディレクトリおよびその下のサブディレクトリ全体に影響を及ぼします。

サーバーによっては.htaccess ファイルを設置できないところもあります。無料のホームページスペースでは置けないところが多いようです。

.htaccessを使ってディレクトリの内容一覧を見せない方法

サーバーによってはインデックスファイルが無い時、ディレクトリの内容一覧を表示するようになっていることがあります。見られたらまずい場合は隠すようにした方がよろしい。

でも、ダミーのindex.htmlかindex.htm を全てのディレクトリに書くのはめんどうな時、.htaccess で解決できます。一覧を表示するのをやめるには、.htaccessファイルに次のように書きます。

Options -Indexes

反対に見せる場合は、

Options +Indexes

とします。

.htaccessを使ったアクセス制限(直リンク禁止)

HTMLファイルに対するアクセス制限(直リンク禁止、直接リンクを禁止)は、掲示板の迷惑書き込み対策と同じものが有効です。

しかし画像ファイル等に対してはこの方法は使えません。でも、.htaccessファイルでは可能です。.htaccessファイルを置いたディレクトリ以下のファイルの全てに適用できます。

SetEnvIf Referer "^http://www\.****\.net" ok
SetEnvIf Referer "^$" ok
order deny,allow
deny from all
allow from env=ok

1行目で、環境変数Refererが"http.//www.****.net"だったなら、okという変数をセットします。

2行目でNorton Internet Security等を利用している場合等で、参照元を隠してアクセスした場合や、アドレスを直打ちしてRefererが無い場合にも表示できるようにします。

3行目で拒否と許可の順番を指定、4行目で全てを拒否して、5行目でokのみを許可します。

この方法は画像フォルダが別になっている場合にしか使えません。HTMLファイルと画像ファイルが混在している場合は次のようにします。

<Files ~ "\.(gif|png|jpg)$">
SetEnvIf Referer "^http://www\.****\.net" ok
SetEnvIf Referer "^$" ok
order deny,allow
deny from all
allow from env=ok
</Files>

1行目で画像ファイルの種類を指定しています。このファイルの種類を変えればそれなりの動作をします。

BASIC認証(IDとパスワードでアクセス制限)

Basic認証とは、IDとパスワードを正しく入力しない限り、そのディレクトリ以下のファイルにアクセスできないようにする仕組みです。これも .htaccess によって実現できます。

例として、/abc 以下のディレクトリに適用する場合は .htaccess ファイルを /abc/.htaccess のように置いてファイルの内容は次のように記述します。

require valid-user
AuthName "Please enter user name and password"
Authtype Basic
AuthUserFile /****/*****/abc/.htpasswd

/****/*****/abc/.htpasswd というのはIDとパスワードの組が入ったテキストファイル .htpasswd へのフルパスを指定します。このドキュメントルートのパスがわからない時はサーバーの管理者に問い合わせてください。

例として .htpasswd のテキストファイルの内容は次のようにします。

abcdef:KTmc76gQ/YvZg

これは ID = abcdef Password = 123456 とした場合の例です。インターネットで「ID パスワード 暗号化 BASIC認証」で検索すれば暗号化するプログラムはいくらでもあります。

IDとパスワードの組み合わせが多くある場合はこの行数を増やせば対応できます。