Laravelの.htaccessの設定を調べている中、.htaccess
ってNginxでも使えるのかなと調べました。
表題の通りApacheもNginxも.htaccess
は使わない方が良いとの結論を出していました。
両方の公式から理由をまとめてみます。
Apacheでは.htaccessを極力使わない方が良い
一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。
その理由として性能とセキュリティの理由を挙げています。
性能面
.htaccess
の利用を許可すると、Apacheは各ディレクトリで.htaccess
ファイルを探します。
これは.htaccess
が無いディレクトリでも同様に探しますし、文書がリクエストされる度に読み込みます。
そのため、Apacheの主設定に記載することでパフォーマンスをあげることができます。
httpd.conf
やそこからインクルードしたファイルの設定がApacheの主設定です。
これはApacheの起動かリロード時にまとめてキャッシュするため、.htaccess
を使うより性能が良い。
セキュリティ面
ユーザにサーバの設定を変更することを 許可することになりますので、あなた自身が管理できない変更をされる恐れがあります。 「コンテンツ提供者がディレクトリ毎の設定を行ないたいけれど、サーバシステムのrootアクセス権限を持っていない」場合にのみ使うべきものです。
.htaccess
ファイル の使用を完全に無効にするためにはAllowOverride None
と設定します。
Nginx で.htaccessはどういう扱いか?
公式から.htaccess
についての見解が出ています。
Like Apache: .htaccess | nginx.com
簡潔にまとめると「パフォーマンスに悪影響だからディレクトリ見るたびに.htaccessがあるか確認するなんてうちではやらないよ」ってことらしいです。
おわりに
性能とセキュリティが必要な本番環境は.htaccess
を使わないようにしていきたい。
お客さんへの確認用のVirtualHostがたくさん載ったサーバの管理のみに限定する。