Webサーバの動作をディレクトリ単位で設定するためのファイル。
それが位置するディレクトリおよびサブディレクトリ全体に影響を及ぼす。
サーバはまず、httpd.conf に書かれている設定を有効にし、次に .htaccess ファイルがある場合は、その設定をオーバーライドする。.htaccess が複数見つかった場合、上位から下位ディレクトリに向けてオーバーライドされる。
ブラック・リスト(「RequireAll」とし、「すべてを許可」と「拒否するもの」をリスト・アップ)
「RequireAll」は全ての条件にマッチする場合のみアクセスを許可する。
<RequireAll> Require all granted Require not host .cn Require not host .res.rr.com Require not ip 82.141.189.238 </RequireAll>
ホワイト・リスト(「RequireAny」とし、「すべてを拒否」と「許可するもの」をリスト・アップ)
「RequireAny」はいずれかの条件にマッチする場合はアクセスを許可する。
<RequireAny> Require all denied Require ip 127.0.0.1 Require ip 192.168.1. Require host .jp Require host .bbtec.net Require host .sec.nifty.com </RequireAny>
※<RequireAll|Any|None> のディレクティブを省略した場合は RequireAny として動作する。
ホワイト・リストは省略して下記のように書ける。
ホワイト・リスト(「許可するもの」をリスト・アップ)
Require ip 127.0.0.1 Require ip 192.168.1. Require host .jp Require host .bbtec.net Require host .sec.nifty.com
・拡張子が「.dat」であるすべてのファイルを見れないようにする。
<FilesMatch "\.dat$"> Require all denied </Files>
・拡張子が「.gif」「.jpg」「.png」であるファイルのみを見れないようにする。
<FilesMatch "\.(gif|jpg|png)$"> Require all denied </Files>
・「access.log」というファイルだけ見れないようにする。
<FilesMatch "^access\.log$"> Require all denied </Files>
・「.htaccess」と「.htpasswd」ファイルを見れないようにする。
AddHandler cgi-script .htaccess AddHandler cgi-script .htpasswd
または、
<FilesMatch "^\.(htaccess|htpasswd)$"> Require all denied </Files>
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
SSLRequireSSL AuthType Basic AuthUserFile /YOUR-DIRECTORY(FULL PATH)/.htpasswd AuthName "Input your ID and Password." Require valid-user
※ AuthUserFile のフルパスは下記内容の PHP ファイルにアクセスすることで調べられる。
<?php echo __FILE__; ?>
※ .htpasswd の書式は、ユーザ名とパスワードを半角コロン記号「:」で区切る。
但し、パスワードはハッシュ化する。→ Password Hash Generator
※ .htpasswd ファイルは、サーバの公開領域に設置しない。
レンタルサーバなどで不可であれば、.htaccess で見れないようにする。
※ .htpasswd ファイルのパーミッションは、604 にする。
※ .htpasswd のパスワードがハッシュ化されていても、ネットワーク上の通信はほぼ平文で流れるため盗聴に備えて SSL 化は必須。
※ 特定のアクセスに対しては、認証なしでアクセス出来るのようにするには、「リモートIP/ホストによるアクセス制限」を追記する。
SSLRequireSSL AuthType Basic AuthUserFile /YOUR-DIRECTORY(FULL PATH)/.htpasswd AuthName "Input your ID and Password." Require valid-user Require ip xxx.xxx.xxx.xxx
※ <RequireAll|Any|None> のディレクティブが省略されているので RequireAny として動作する。