Apacheで.htaccessを使ってみよう

Apacheでは.htaccessを配置することでディレクトリごとに設定を適用することができます。

ベーシック認証を利用して使い方を見ていきましょう。

.htaccessファイルとは何か?

Apacheの公式サイトでは分散設定ファイルと呼ばれているます。

その名の通り、apache2.confなどの設定ファイルとは分けて作成し、設定を適用したいディレクトリに置くことで有効になります。

.htaccessはデフォルトの名前

.htaccessはApacheが最初から決めている名前で、他のファイル名にすることも可能です。

例えば、下の例では、.htaccessの代わりに.configという名前に変更しています。

AccessFileName .config

ただし、一般的にも.htaccessの名前は知られているので、他のファイル名に変更するメリットは少ないでしょう。

.htaccessを設定する

手順の確認

先にどのように設定していくか手順を見ておきます。

目的

  • Apacheのトップページにベーシック認証をかける

手順

  1. apache2.confを編集する
  2. 該当ディレクトリに.htaccessファイルを作成
  3. Apacheの再起動

apache2.confの編集

まずはapache2.confの設定を変更します。

トップページに認証をかけるため、/var/www/のディレクトリを次のように編集します。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        # AllowOverride None
        AllowOverride AuthConfig
        Require all granted
</Directory>

AllowOverrideとは?

AllowOverride外部ファイルによる上書き設定を指定する項目です。

.htaccessで設定を行うため、AllowOverrideをNoneからAuthConfigに変更します。

.htaccessの作成

.htaccessは設定を反映させたいディレクトリに配置します。

まずは空ファイルをtouchコマンドで作成してみましょう。

touch /var/www/.htaccess

次に.htaccessに設定を書いていきます。

AuthType Basic
AuthName "Basic Test"
AuthBasicProvider file
AuthUserFile /etc/apache2/passwd/passwords
Require user kana

編集が終わったら忘れずに保存します。

ベーシック認証の項目については、Apacheでベーシック認証かけてみようをご参考ください。

Apacheの再起動と確認

設定を反映するには再起動が必要です。

apachectl restart

再起動ができたらブラウザでアクセスしてベーシック認証ができるか確認します。

localhost

.htaccessの設定自体はここで終わりです。

ドットファイルに注意

念のための説明として、.htaccessはlsコマンドに-aのオプションをつけないと表示されません。

私の場合は縦に並んだ方が見やすいため、lオプションと一緒に使います。

ls -al

デフォルトでは見えていませんが、vimなどのエディターで編集してみれば、確かにそこにあることがわかるでしょう。

vim .htaccess

ファイル名に.がつくものは全て同じなので覚えてきましょう。

.htaccessのデメリット

インターネット上では.htaccessの使い方が多く紹介されていますが、Apacheの公式サイトでは設定ファイルに直接書くように勧めています。

理由は以下の通りです。

パフォーマンスの低下

1つはサーバーが.htaccessを探しにいくため、処理速度が低下することです。

.htaccessはディレクトリにし、その効果はサブディレクトリにも及びます。

つまり、深いディレクトリに.htaccessファイルがない場合、親ディレクトリまで遡って探しに行くことになります。

セキュリティの問題

公開するディレクトリによっては、ユーザーが.htaccessファイルを編集することができます。

(各ユーザーのhomeディレクトリを公開するなど)

管理者以外が設定ファイルを触れてしまうのは混乱の元になりますので、できるだけ避けるべきです。

一元管理ができない

これは私的な意見ですが、各ディレクトリに配置するということは、設定ファイルがあちこちに分かれることを意味します。

本来であればapache2.confを見るだけでいいものを、各ディレクトリに.htaccessが存在するか確認するといった作業が必要になるでしょう。

ただ設定ファイルを分けたいのであれば、apache2.confからIncludeで指定して、各設定ファイルは同じディレクトリにまとめておけば済みます。

まとめ

Apacheの公式サイトでは推奨されていない.htaccessですが、多くのウェブサイトで使われているのは間違いありません。

そのような関係から、誰かが作成した.htaccessを編集する機会があるかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です