WEBサイトを作っているとローカル環境で構築できれば特に問題ないのですが、いきなりグローバルな環境に作ることになった場合、作成中の画面は見せたくないですよね。
そんな時、簡単にアクセス制限をかけるのに有効なのがBasic認証です。
初めてWEBサイトを作っている新人のカシミール(仮)君が難問に出くわしました。
という場合のチェックポイントを紹介します。
開発中のWEBサイトにBasic認証がかけられない
今日はいつも以上にカシミール(仮)君が慌ててる。
こっちは慣れっこなんで、そんなことくらいじゃ声をかけない。
いや...
かけてやらない。
ちょっと離れた席から眺めるだけだ。
しばらくするとアレコレやっていたカシミール(仮)君がトボトボと相談に来た。
話を聞くと、どうやら彼が開発中のWEBサイトがBasic認証をかけられずに全世界に公開されているらしい(笑)
地球上のどこからでもインターネットの回線さえあればアクセスできる状況だ。
これは恐ろしい。。。
怪しいところはココ
まずは「.htaccess」の書き方が正しいのか見直しをさせた。
彼の答えは「大丈夫です」だった。
「本当か!?違っていたらkrsz・・・!!」
ファイルをみてみたが問題はなさそうだった。
カシミール(仮)君に指示したことは以下になる。
.htaccessを疑え
1 ファイル名はあってるか?
「t」が多いとか「c」が少ないとか単純なミスの可能性があるから一先ずファイル名をコピペでリネームしなさい。
2 そもそも書き方はあってるか?
最低限下記が書いてあればOK
AuthUserFile /var/www/html/.htpasswd
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user
※AuthUserFileは自分の環境にあわせること!!
3 ファイル名に全角文字が混ざってないか?
ありがちですが、1文字だけ全角文字が混ざっているとかないか?
ファイル名だけでなく、ファイルの中に書かれているパスに全角文字が混ざっていたら当然ダメ。
.htpasswdは関係ない
Basic認証が効く、効かないという問題に関して言えばこのファイルは関係なし。
正しくパスワードを入力しているのにページにアクセスできないとかなら疑う必要がある。
httpd.confだろ?
まだ解決できないなら原因は恐らくここ。
WEBサーバとしてApache使っているなら、かなり怪しい。
httpd.conf内に「.htaccess」を使用する許可をしてあげないといけない。
「None」を「All」に変更することで「.htaccess」が利用可能となる。
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
# AllowOverride None
AllowOverride All
結局、「httpd.conf」の設定がダメだったと報告を受けた。
最後に
Basic認証がかけられない時に疑うポイントです。
・「.htpasswd」は怪しくないけどパスワードが正しく書かれているかチェック
・「httpd.comf」で.htaccessにアクセスできるように許可しろ!!
これでせっかく、全世界デビューしたカシミール(仮)君の開発中だったWEBサイトはID、パスワードを入力しないと見る事ができない何ともつまらない状態(というか想定通りの)になりました。
今回はカシミール(仮)君をかなり助けてしまいました。
きっとこのエントリーに辿り着いたってことはカシミール(仮)君と同じ問題に悩んでいると思います。
今回のポイントをチェックしてみてください。