まず、ファイルの拡張子でアクセスさせたくない場合はこう。
<Files ~ "\.(db|log|ini)$">
Deny from all
</Files>
ディレクトリを指定して、そこだけ基本認証をかけたいならこう。 ※.htaccesに書くなら <Directory で囲む必要なし。
<Directory /home/xxx/public_html/private/>
AuthType Basic
AuthName "DEMO"
AuthUserFile /home/xxx/.pwd
AuthGroupFile /dev/null
require valid-user
</Directory>
その中でも.phpと.htmlだけ基本認証を掛ける場合。※Auth~記述はDirectoryのほうに書くのがコツ。Files内に書いたらNGでした。
<Directory /home/xxx/public_html/private/>
AuthType Basic
AuthName "DEMO"
AuthUserFile /home/xxx/.pwd
AuthGroupFile /dev/null
<Files ~ "\.(php|html)$">
require valid-user
</Files>
</Directory>
※ 上記のように .html に制限を掛けたいときは、index.htmlというファイル名を指定しない / でアクセスされた場合も考慮しないといけない。ファイル名部分が無い場合も対象になるように以下へ変更。
<Files ~ "^(.+\.(php|html))?$">
require valid-user
</Files>
特定のディレクトリ以下は、基本認証の対象から外したくなった場合はこう。AnyでIP制限か基本認証のどちらか通過すればOKとする。デフォルトはAll
<Directory /home/xxx/public_html/private/non_protect/>
Satisfy any
</Directory>