.htaccessファイルとは

Apache
Apache
この記事は約5分で読めます。

WordPress管理画面にIPアドレス制限をかける調査をする際、.htaccess ファイルを利用できるという情報がネットにありました。
そもそも .htaccess ファイルって何なの?という理解でしたので、個人ブログ運用観点から調べてみました。

結論、以下 2 つのドキュメントを見れば大体の概要が分かります。

Apache HTTP Server Tutorial: .htaccess files - Apache HTTP Server Version 2.4
Configuration Files - Apache HTTP Server Version 2.4
まとめ
  • .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 ドキュメントでは推奨されていません。

一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。

Apache チュートリアル: .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

参考

Understand default .htaccess file configuration
タイトルとURLをコピーしました