まあ、.htaccess を使ったベーシック認証のやり方なんて、ネット上で調べたらあちこちに出てくるので、いまさら感がありますが、自分用まとめということで記載しておきます。
例えば、phpMyAdmin フォルダにベーシック認証をかける場合。
■ 下準備をする
ベーシック認証をかけるには、正確なサーバーパスが必要です。
わからなければ、以下の記述をコピペして、新規テキストにして保存し、ファイル名を getpath.cgi にして phpMyAdmin フォルダにアップロードしてください。そして、パーミッション(実行権限)を705に変更して、実際にブラウザでgetpath.cgi にアクセスすると、正確なサーバーパスが表示されます。
#!/usr/bin/perl use strict; my $file = 'getpath.cgi'; $ENV{'SCRIPT_FILENAME'} =~ /(.*)$file$/; my $myroot = $1; print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=shift_jis\">\n"; print "<title>Get Path</title>\n"; print "</head>\n"; print "<body>\n"; print "$myroot\n"; print "</body>\n"; print "</html>\n"; exit;
サーバーパスが表示されたら、それを何処かメモ帳にでも一時的に保存したら、getpath.cgi は削除してください。残しててもリスクしかありません。
1. phpMyAdmin フォルダ直下に .htaccess 設置する
内容は以下のとおり。 ハイライト部分の AuthUserFile の .htpasswd より前の「/home/example/www/phpMyAdmin/」は先ほど取得したサーバーパスに差し替えてください。
# ベーシック認証 AuthType Basic AuthName "IDとパスワードを入力してください。" AuthUserFile /home/example/www/phpMyAdmin/.htpasswd AuthGroupFile /dev/null require valid-user # .htaccess への直アクセス遮断 <Files ~ "^.(htpasswd|htaccess)$"> deny from all </Files>
2. IDとパスワードを記述した .htpasswd を作成する
.htpasswd のパスワードは暗号化されてないとあまり意味がないので、暗号化する。
ベーシック認証用に暗号化してくれるサービスはネット上にたくさんあるので、それを利用するのが簡単だ。
例えば、「基本認証 パスワード 暗号化」などの用語で検索すると出てくる。
大抵IDとパスワードを入力すると、以下のような .htpasswd の形式で出力してくれるので、そのままテキストに貼り付けて、ファイル名を.htpasswd にして phpMyAdmin フォルダにアップロードする。
test:3gJUPDWwdZNHY
以上で作業は完了。
あとは、実際にphpMyAdmin にアクセスしてみてベーシック認証がポップアップされるか、入力したIDパスで入れるか、または、間違ったパスを入れたらブロックされるかを試験してください。
もし、正しいIDとパスで入力しているのに、入れないという場合は、.htaccess .htpasswd の文字コードを見直してください。
私の環境では、utf-8 で保存していたらダメで、shift-jisならOKだったことがあります。