noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

本番環境とテスト環境それぞれでベーシック認証をかける

ひさしぶりのWEB系の記事の投稿です。

興味のない方はブラウザバックしちゃってくださいw

 

今回は本番サイトのテスト環境それぞれのBasic認証が思うように機能せず、イメージした動作にするまで少々手こずったので忘れないように備忘としてのメモです。

 

現環境

SSL導入済み

・現在のディレクトリ構造(以下画像)

・memberディレクトリへのアクセスはphp+mysqlを使ったベーシック認証でアクセス制限を行っています。

 

実現したいこと

・テスト用のsubディレクトリ内のmemberのベーシック認証はそのままに、本番用ディレクトリにのみhtaccessによる別のベーシック認証をかける。

・memberディレクトリへのアクセス時のユーザーID・パスワードと、別のベーシック認証のユーザーIDとパスワードは別にする。

 

うまくいかなかったこと

memberディレクトリへのアクセス時にブラウザに出力される認証ダイアログでログインできない。認証ダイアログにmemberのユーザーIDとパスワードや、htaccessのユーザーIDとパスワードを入力してもログインできない。認証ダイアログが何度もブラウザに出力される。

 

対応

subディレクトリに新規でhtaccessを以下内容で作成。

こっちは単純なhtaccessによるアクセス制限ですね。

<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>

AuthUserFile /home/xxx/public_html/hogehoge.com/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
order deny,allow

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

 

memberディレクトリの直下には以下内容のhtaccessを作成。

Satisfy Any
Order allow,deny
Allow from all
Deny from none

RewriteEngine  On
RewriteCond     %{HTTP:Authorization} ^(.*)
RewriteRule     ^(.*) - [E=HTTP_AUTHORIZATION:%1]

 

以上でした。