apache アクセス制限について全く分かっていなかったのでまとめる

「66.228.122.42」からのアクセスを403(Forbidden)にしたい場合

トップに以下のようにdeny設定をする

<Directory "/var/www/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

deny from 66.228.122.42
</Directory>

これで指定のIPからの接続は拒否される。
しかし下層のディレクトリで以下のようにOrderの設定がされていると
それで上書きされるため、トップのIP制限が有効とならない。

<VirtualHost *:80>
ServerName sample.com
DocumentRoot /var/www/html/sample.com

<Directory "/var/www/html/sample.com"> 
  AllowOverride All
  Options FollowSymLinks
  Order allow,deny
  Allow from all
</Directory>
</VirtualHost>

下層ではAllowOverrideのみ上書きしたいのであれば、
以下のようにすること。

<VirtualHost *:80>
ServerName sample.com
DocumentRoot /var/www/html/sample.com

<Directory "/var/www/html/sample.com"> 
  AllowOverride All
</Directory>
</VirtualHost>

このようにすることで、Orderの設定はトップから引き継ぐことが可能。

下層でトップの設定を上書きしていないか?

ということを常に意識すること。