Apache2 .htaccess .htpasswd 設定

.htaccessとはディレクトリ単位でアクセス制御するためのファイルです。
アクセス制御を行うディレクトリの中へ入れることによって実現します。
例えばCGIやSSIなどを実行可能にしたり、ユーザ認証、IPアドレスやドメイン単位でのアクセス制限、サイトの引っ越やURL変更などによるリダイレクト等さまざまな設定がでます。 .htaccessファイルで設定した内容は、.htaccessファイルがあるディレクトリとそれ以下のサブディレクトリに適用されますので各ディレクトリごとに異なる細かな設定が可能です。
(各ディレクトリごとこの設定を確認するという動作が加わるので負荷は増します)

httpd.confでの設定

まずhttpd.confでの設定です。
329行目付近
AccessFileNameに「.htaccess」を使用する場合の設定です。別のファイル名にもできますが一般的にこのまま「.htaccess」を使用することとします。

335行目付近
「.htaccess」で細かな設定が可能になるわけですので、このファイルの中に設定情報が記述されるわけですがそれを外から観覧されてはセキュリティー上問題ありです。これを観覧できないように設定します。
「.ht」で始まるファイルへの観覧を拒否しています。

<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>

apache2設定15



続いて許可するディレクトリの設定をします。
例えば「D:\www1」のディレクトリ以下で「.htaccess」による制御を有効にするには
「AllowOverride」を「all」にとします。

<Directory "D:/www1">
AllowOverride non
</Directory>

あとは「.htaccess」を制御したいディレクトリ「D:\www1」に設置すればOKです。

.htaccessファイルの作成

windows環境で作成することを前提に...

メモ帳を開き記述する。書き方のルールはhttp.confと同様。
保存は[ファイル]-[名前を付けて保存]-[ファイルの種類]を全てのファイルに変更後
「.htaccess」の名前で保存。先頭の「.」ドットをお忘れなく。

設定例 [xxx.yyy.ab.jpのアクセス拒否]
order allow,deny
allow from all
deny from xxx.yyy.ab.jp

設定例 [yunayuna.net、aaa.comのみアクセス許可]
order deny,allow
deny from all
allow from yunayuna.net
allow from aaa.com

設定例 [abc以下のファイルへのアクセスはdef以下にある同名ファイルへ永久にリダイレクト]
Redirect permanent /abc/ http://xxx.***/def/

設定例 [http://abc.net/xxx.htmへのアクセスはhttp://ccc.com/xxx.htmlにリダイレクト]
Redirect permanent http://abc.net/xxx.htm http://ccc.com/xxx.html

.htpasswdを使ってBasic認証する

.htaccessと.htpasswdと組み合わせることによりユーザ認証ができます。
特定のディレクトリのみユーザ名、パスワードを入力しないとアクセスできないような設定です。
自宅サーバで運用している場合はApacheにexeがあるのでそこから作成できます。
レンタルサーバなどの場合は難しい場合もあるかと思います。
外部ですが暗号化されたパスワードが生成できます。

http://www.avis.ne.jp/avis-cgi/htpasswd.cgi

ここで生成された物をメモ帳などを使って「.htaccess」と同様に新規作成、記述すればOKです。

.htpasswdの新規作成

ユーザ「test」
パスワード「abc」を新規作成してみます。
apache2のインストールしたディレクトリ「C:\apache\Apache Group\Apache2\bin」に 「htpasswd.exe」があることを確認します。
コマンドプロンプトより
「"C:\apache\Apache Group\Apache2\bin\htpasswd.exe" -c C:\.htpasswd test」を実行。
[htpasswd.exeまでのパス][-cは新規作成(追記の場合は省略)][.htpasswdの作成場所][ユーザ]
パスワード「abc」を入力
再度パスワード「abc」を入力

htpasswd設定1



これで完了です。先ほど指定した「C:\.htpasswd [.htpasswdの作成場所]」に
.htpasswdが作成されているかと思います。
出来上がった「.htpasswd」をメモ帳で開いてみれば暗号化されたユーザとパスワードが記述されているかと思います。この「.htpasswd」を認証したいディレクトリに設置すれば完了です。

htpasswd設定2


.htaccessのユーザ認証設定

暗号化された「.htpasswd」のファイルだけあってもbasic認証はできません。
「.htaccess」に認証する為の設定をします。
「.htaccess」がある場合は追記無い場合は新規に作成します。
記述する内容は

AuthType Basic
AuthName "認証しますよー"
AuthUserFile D:/www1/abc/.htpasswd
require valid-user

更に「http.conf」内で「.htaccess」「.htpasswd」等の観覧を拒否していないのであれば
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>
とすればGoodです。


          HOME           先頭▲