サイト全体にベーシック認証をかけていて、特定のディレクトリのみ違うIDとパスワードを設定したい時の方法を記します。
例えば、https://hoge.com/ にBasic認証をかけていて https://hoge.com/foo/ のみ違うBasic認証をかけたい場合などです。
うまくいかなかった方法
下記の2パターンを試したのですが、自分のやり方が間違っていたのか、記事が古いためかわかりませんが、うまくいきませんでした。
なので、色々試しながらうまく行った方法を共有します。以外にもシンプルでした。
全体(https://hoge.com/)にかけているベーシック認証
下記のように.htaccessに記述してサイト全体にベーシック認証をかけているとします。
パスはXサーバーのものを記述しておりますが、ご利用の環境のものに読み替えてください。
AuthType Basic
AuthUserFile /home/hoge/hoge.xsrv.jp/public_html/.htpasswd
AuthName "Please enter your ID and password"
Require valid-user
特定のディレクトリ(https://hoge.com/foo/)に違うベーシック認証をかける
違うベーシック認証をかけたいディレクトリ(ここでは/foo/)に.htaccessを作成し、下記のように記述します。
同じディレクトリに.htpasswdを作成して任意のID・パスワードを設定すれば完了です。
AuthType Basic
AuthUserFile /home/hoge/hoge.com/public_html/foo/.htpasswd
AuthName "Please enter your ID and password"
Require valid-user
結論として、違うベーシック認証をかけたいディレクトリに.htaccessと.htpasswdを置いてやるだけでよかったみたいです。完全に盲点でした。
しかし、このやり方には注意点もあるようです。
注意点
.htaccessでは<If>や<Directory> などのタグには実行順序があるらしく、全体のベーシック認証で<If> タグを使用しているとうまくいかなかったりするようです。
下記の記事では、全体のベーシック認証で<If> タグを使用している場合の解決方法を示しています。
以上、ベーシック認証で特定のディレクトリのみ違うID・パスワードを設定する方法でした。
.htaccessに関しては自分がまだわかっていない部分もあり説明が弱く恐縮ですが、参考になれば幸いです。
コメント