ひさびさにApacheで.htaccessを設定したので備忘録。
https://blog.mamimu.me には、このブログ含めてWordPressのブログが5つあるんですが、2つを非公開にしたくなったのでベーシック認証を設定しました。
htaccessの内容を httpd.confなどのコンフィグに書く場合とDocumentRoot配下に .htaccessを置くやり方があります。
10年ぐらい前に読んだApacheの公式では前者を推奨していました。
理由として、前者は起動時にメモリに読むだけです。後者は起動時にメモリに読み込ませない反面、アクセスのたびに読み込みます。よってレスポンスが悪くなります。
しかし前者のデメリットとして設定変更のたびにApacheの再起動が発生します。後者では再起動が発生しません。よって共用サーバーなどでは後者が使用されます。
注)後者でも 最初の1回だけですが .htaccessを使うための httpd.confの設定変更(Apache再起動)が発生します。
.htaccessを置く場合の手順です。
■ .htaccessの有効化
httpd.confに以下の行があるので変更します。
変更前)AllowOverride None
変更後)AllowOverride All
なお、上記の方法だと全てのディレクトリが対象になるため実際には以下のように追記しました。(hogehogeは対象ディレクトリです)
<Directory “/var/www/html/hogehoge”>
AllowOverride All
</Directory>
■ .htaccessの作成
# vi /var/www/html/hogehoge/.htaccess
AuthType Basic
AuthName “Password Required”
AuthUserFile /etc/httpd/conf/.htpasswd
Require user secret ←★ secret は認証ユーザー名です
■ .htpasswdの作成(パスワードファイルの作成です)
# htpasswd -c /etc/httpd/conf/.htpasswd secret
⇒パスワードを入力して設定します
■ オーナー、パーミッションの変更
# chown apache:apache /etc/httpd/conf/.htpasswd
# chmod 600 /etc/httpd/conf/.htpasswd
# chown apache:apache /var/www/html/hogehoge/.htaccess
# chmod 600 /var/www/html/hogehoge/.htaccess
■ Apache再起動
# systemctl restart httpd