[Apache]
多分このページを読むより、Apache 本家のマニュアルを読んだ方が正確で、役に立つこと請け合いです。
http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride
や
http://httpd.apache.org/docs/2.2/howto/htaccess.html
にきっと欲しい情報があると思います。というか、以下は、上記マニュアルをまんま写している箇所もあります。もし、下記に怪しい記述があれば、上記サイトのマニュアルで確認してください。
.htaccess(AccessFileNameディレクティブで指定。他の名前に変更されている可能性もあり)があった場合に、上書き設定できるディレクティブについて記載します。
設定変更の際に、Apache の再起動なく、設定変更が可能になります。また、サーバ管理者の手を煩わせずに、許可された範囲で、ユーザが自由に設定変更可能なので、利便性を求めて、利用されるケースが多いようです。ただし、ユーザがアクセスする毎に、各ディレクトリに、.htaccessが存在しているかどうかをチェックするため、ある程度パフィマンスが犠牲になります。また、.htaccess の設定内容によっては、さらにパフォーマンスが劣化する場合があります。許可すべきディレクティブについては、よく吟味した方がよいと思います。
コンテキストが「ディレクトリ」となっていますが、実際はディレクトリセクションでのみ有効なので、<Directory></Directory> 内での指定は OK ですが、<Location></Location> などでは指定できません。
マニュアルによると
認証に関するディレクティブの使用を許可する (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require など)。
とあります。基本的には、ユーザに認証の設定だけを許したい際に、明示的に指定します。ただし、Apache にauth_module などが組み込まれていないと、そもそも認証機能は使えないので、注意が必要です。
設定例:
AllowOverride AuthConfig
マニュアルによると
ドキュメントタイプを制御するディレクティブ (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime の Add* と Remove* ディレクティブなど)、 ドキュメントのメタデータを制御するディレクティブ (Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName), mod_rewrite の ディレクティブ RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule) と mod_actions の Action ディレクティブの使用を許可する。
とあります。
よく、Wiki やCMSで動的に出力されているページの URL を静的に見せるために、RewriteEngine を利用する場合がありますが、その機能を利用するには、この FileInfo が許可されている必要があります。
マニュアルによると
ディレクトリインデックスを制御するためのディレクティブの使用を許可する (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName など)。
とあります。
index.html を置かずに、ディレクトリ内のファイル一覧を Apache の機能を使って表示させたい、といった場合には、この機能が許可されている必要があります。
マニュアルによると
ホストへのアクセス制御を行うためのディレクティブの使用を許可する (Allow, Deny, Order). Options[=Option,...] 特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可する (Options と XBitHack)。 Options で設定するオプション を、(空白を含めない) コンマ区切りのリストにして等号の後に続けること で 設定できます。
とあります。
設定例:
AllowOverride AuthConfig Limit
簡単な設定例です。大文字、小文字、スペースなどに気を付けてください。また設定後は、期待通りに動作しているか、かならずチェックをお願いします。
AllowOverride All
もしくは
AllowOverride AuthConfig
が指定されている必要があります。
以下の内容の、.htaccess を、認証を掛けたいディレクトリに設定しましょう。認証は、設置したディレクトリだけではなく、その下のサブディレクトリ以下も同様に認証が掛かります。もし、そのサブディレクトリに、.htaccess があれば、そちらの設定で上書きされます。
AuthType Basic AuthName "Staff Only" AuthUserFile "/hogehoge/.htpasswd" Require valid-user
.htpasswd は、Apache のコンテンツとして見える必要はありません。極力 DocumentRoot 以下には配置しないようにしましょう。大抵は
<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>
という設定が入っていて、アクセスできないかとは思いますが、上記の設定が、誤って消されてしまった場合のフェールセーフという意味でも、是非。
AllowOverride All
もしくは
AllowOverride AuthConfig Limit
が指定されている必要があります。
AuthType Basic AuthName "Staff Only" AuthUserFile "/hogehoge/.htpasswd" Require valid-user Order Deny,Allow Deny from all Allow from 192.168.1.1 Allow from 2001:db8::a00:20ff:fea7:ccea Satisfy Any
上記の例では、192.168.1.1(IPv4アドレス) もしくは 2001:db8::a00:20ff:fea7:ccea(IPv6アドレス) からのアクセスでは、パスワードは聞かれず、ページが閲覧できます。他のアドレスからは、ID/パスワードが必要です。
ちなみに、ネットワーク単位で制御する場合は
Allow from 2001:db8::/64
とかになります。2001::db8/64 ではうまく行きません。