Apacheで全体の共通設定は主サーバ設定に

.htaccessに書くと処理能力やセキュリティの低下を招く可能性があります。

詳しくはApacheの公式チュートリアルにあります。

Apache チュートリアル(Ver 2.4)

公式サイトにも記載がありますが、まず最初に処理能力が低下する理由です。 【AllowOverride】ディレクティブで【.htaccess】を使用出来る状態になってい場合は、Apache は 各ディレクトリで【.htaccess】ファイルを探します。 仮に「/hoge/huga/index.html」へのリクエストがあり【AllowOverride】と【.htaccess】の有効範囲が「/」以下ならば

1
2
3
4
/.htaccess
/hoge/.htaccess
/hoge/huga/.htaccess
/hoge/huga/index.html

の順に【.htaccess】を読み込みます。

実際に【.htaccess】ファイルがあろうがなかろうが【.htaccess】を有効にしているディレクトリ及びサブディレクトリにアクセスします。特に問題なのは【.htaccess】ファイルがない場合もファイルシステム的にはアクセスするので無駄なオーバーヘッドがあります。

そしてこの処理はリクエストが来るたびに毎回行われます。 デフォルトの【httpd.conf】ファイル上では「/」ディレクティブは【AllowOverride none】となっており通常は、意図的に変更してなければ気にしなくても大丈夫です。

2つ目のセキュリティに関してですが、これは単純で設定ファイルを集約せずに拡散させていると管理が複雑になり何をどう変更して実行しているのかわからなくなるからです。最近は「ロリポップ」や「Freedom Hosting II」へのシンボリックリンク攻撃なども行われています。

Apache HTTPD: Options -FollowSymLinks は不完全

Torなどの匿名化技術を使って構築された「ダークウェブ」上のホスティングサービスがハックされデータ流出

サーバ共通の設定を主設定、もしくは主設定がインクルードするファイルに設定保存すると、管理も複雑化しにくくなります。

主サーバ設定は起動時に1回だけ読み込まれ、それ以降は読み込まれないので負荷の軽減になります。