WordPress管理画面にIPアドレス制限をかける調査をする際、.htaccess ファイルを利用できるという情報がネットにありました。
そもそも .htaccess ファイルって何なの?という理解でしたので、個人ブログ運用観点から調べてみました。
結論、以下 2 つのドキュメントを見れば大体の概要が分かります。
- .htaccess は Apache の分散設定ファイル
- Webサーバのパフォーマンスが低下するため使用は非推奨
- .htaccess でしかできない機能はない。httpd.conf で設定しよう
.htaccess(ドット・エイチ・ティ・アクセス)とは
OSSのWebサーバーソフトウェアApacheで使用される分散設定ファイルのことです。
通常、Apacheの設定は httpd.conf ファイルにディレクティブという命令を記述することで設定されます。
<RequireAll>
Require all granted
</RequireAll>
一方で、.htaccess で許可されるディレクティブの種類を設定する AllowOverride ディレクティブを httpd.conf ファイルに記述することで、.htaccess ファイルでもディレクティブを設定できます。
なお、httpd.conf ファイルと違い、.htaccess ファイルは適用させたいディレクトリ配下に格納します。
そうすることで、そのディレクトリ・サブディレクトリにディレクティブを適用させることが可能になります。
実は .htacccess ファイルの使用は推奨されていない
しかし、.htaccesss ファイルは Apache ドキュメントでは推奨されていません。
一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、
Apache チュートリアル: .htaccess ファイル.htaccess
ファイルの使用は極力避けてください。
理由としては、Webサーバーのパフォーマンス低下、管理の煩雑さ、セキュリティです。
本記事では個人ブログ運用の観点から .htaccess を調査しているため、セキュリティについては触れません(複数人がWebサーバーを設定する際のセキュリティに関するもののため、1 人しか設定をしない個人ブログでは配慮する必要がない)。
- パフォーマンス低下
- 各ディレクトリに .htaccess があるか都度確認をする
- ディレクティブによってはリクエストの都度再コンパイルしなければならない(httpd.confでは一度コンパイルされてキャッシュされる)
- 管理の煩雑さ
- 適用したいディレクトリごとに格納されるため、一元管理されない
- ルールがより複雑になりがち
では、特定のディレクトリに適用させたいルールがある場合はどうするのかというと、普通に httpd.conf 内で Directory ディレクティブを使用して設定できます。
デメリットしかなさそうだが、個人ブログ運用で .htaccess を使いたいケースはあるのか
WordPressプラグインが .htaccess 利用を前提としている時が挙げられると思います。
実際に .htaccess がどれほどパフォーマンスを低下させるかは各個人ブログの読み込み時間から計測することでしか分からないと思いますが、レイテンシが許容できるなら使用するのもアリだと思います。
そこはプラグインにより得られる恩恵とレイテンシのトレードオフになりそうです。
ただ .htaccess で記述できるということは httpd.conf でも記述できるということです。
プラグインにより追加された .htaccess の内容を httpd.conf に移記することで、 .htaccess を使用せずプラグインを活用できる場合もあるのではないでしょうか(プラグインバージョンアップ時の対応など運用面を考えると面倒そうですが)。
Amazon Lightsail の WordPress ではデフォルトで .htaccess は使用できない
Lightsail の WordPress(正確には使用されている Bitnamiスタック) では httpd.conf で AllowOverride を None に設定しているため、デフォルトでは .htaccess を利用できない設定になっています。
以下確認方法です。
httpd のプロセスを確認します。
ps aux | grep httpd
root 732 0.0 0.9 12468 9460 ? Ss Apr16 0:16 /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf
bitnami 2979 0.0 0.0 6072 880 pts/0 S+ 14:50 0:00 grep httpd
daemon 29235 0.0 1.5 1604008 16108 ? Sl 00:00 0:00 /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf
daemon 29236 0.0 1.6 1603228 16812 ? Sl 00:00 0:00 /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf
httpd.conf の AllowOverride の設定を確認します。
cat /opt/bitnami/apache/conf/httpd.conf | grep AllowOverride
AllowOverride none
# AllowOverride controls what directives may be placed in .htaccess files.
# AllowOverride FileInfo AuthConfig Limit
AllowOverride None
AllowOverride None
参考