• 締切済み

htaccessでのアクセス制限

htaccessを使用したアクセス制限を勉強しています。IPアドレスでのアクセス制限はうまくいき、ユーザ毎パスワードでのアクセス制限の方も、ダイアログボックスが出る所までは上手くいったのですが、どんなIDとパスワードを入れても毎回401 Authorization Requiredとなってしまい、原因が分かりません。htaccessの中身は --------------------------------- AuthUserFile ~/.htpasswd AuthGroupFile /dev/null AuthName "ByPass" AuthType Basic <Limit GET POST PUT> require valid-user </Limit> --------------------------- です。 AuthUserFileには、Perlで print "Content-type: text/html;charset='x-euc-jp'\n\n"; $0 =~ /[^\\\/]*$/; print "\$` =$`"; というプログラムをかけてパスを出しました。 サーバはApacheです。原因の分かる方、宜しくお願いします。

みんなの回答

noname#151056
noname#151056
回答No.2

そのPerlプログラムはよくわかりませんが、 .htaccess でチェックすべきなのは AuthUserFile で指定した絶対パスが本当にあっているかという点。 しかし認証で失敗しているという点で、 .htpasswd ファイルの中身が一番あやしいです。 user名:cryptされたパスワード という形式になっているか というのを確認してください。 また、user名(アカウント名)があっているか パスワードがあっているか、cryptしないでじかにパスワードを記述していないか などを確認してください。

ryogoku
質問者

補足

.htpasswdの中身は、 test:nqBidLn29x4Yg という形になっています。htpasswdプログラムが使用できなかったので、crypt関数を使うフリープログラムで暗号化してみたのですが。確かめてみます。

noname#151056
noname#151056
回答No.1

.htaccess についてはさっぱりわからないので自信がありませんが、 とりあえず AuthUserFile のあとの「~」は「~」の誤りではないでしょうか? あと、.htpasswd ファイルの中身には Content-type:text/html;charset=... という記述はいらないのではないでしょうか。 これってHTMLヘッダですよね? .htpasswd ファイルの中身には ユーザ名:暗号化されたパスワード という記述があればよいと思います。違うかも。

関連するQ&A