普段は BASIC 認証をかけたいディレクトリに .htaccess を設置するのだけれど、そのディレクトリが存在しない(example.jp/index.php/admin/ が管理画面の URL)システムに BASIC 認証をかける時に悩んだので。
httpd.conf が触れるのであれば、LocationMatch とかを使えばいいらしいが、レンタルサーバではそういうわけにもいかなかったので、.htaccess で対応。
仮想ディレクトリとでもいうのだろうか。
「特定の URL に BASIC 認証をかける」ではなく、「特定の URL(本番環境のフロント全部)だけ BASIC 認証をかけない」というやり方。
.htaccess
# 大前提として、全部閲覧禁止とする
Order deny,allow
Deny from all
# BASIC認証が通った場合は閲覧許可
AuthUserFile "/home/SERVER_ID/example.jp/htpasswd/.htpasswd"
AuthName "Input your ID and Password."
AuthType Basic
require valid-user
# もしくは・・・
Satisfy any
# URL が管理画面か、ホスト名がテスト環境で無い場合は閲覧許可
SetEnvIf Request_URI "/admin/*" noauth
SetEnvIf Host "test.example.jp" noauth
allow from env=!noauth
参考にさせていただいたサイト
特定URL時のみ、basic認証