さくらのレンタルサーバーでBasic認証を行う場合、他のレンタルサーバーの設定だと、エラーになるかもしれません。その場合は、以下の様な点を見なおしてください。
Last update 2016-09-25 16:04
他のレンタルサーバーを使っていて、さくらのレンタルサーバーに移行した時に、Basic認証がエラーになる場合があります。
また、Basic認証をさせたいページ(PHPなど)が500番エラーになる場合があります。
その場合の修正と見直すべきポイントを紹介します。
最後に、パスワード認証用のIDとパスワードを記述する「.htpasswd」の作成方法を紹介します。
Sponsored Link
PHPなどで、
if (empty($_SERVER["PHP_AUTH_USER"]) || empty($_SERVER["PHP_AUTH_PW"])
|| $_SERVER["PHP_AUTH_USER"] != $User
|| $_SERVER["PHP_AUTH_PW"] != $Pw){
header('WWW-authenticate: basic realm="' . $realm . '"');
header("HTTP/1.0 401 Unauthorized");
exit();
}
のようなPHPだけで「Basic認証」を実現したい時があるかと思います。
ところがさくらのレンタルサーバーだと、PHPがCGIとして動作するため、うまく動作しません。
原因は、$_SERVER["PHP_AUTH_USER"] と $_SERVER["PHP_AUTH_PW"]の値がデフォルトだと取得できないためです。(正しいパスワードを入力しても、永久に認証画面がでてしまう)
これを解決するには、「.htaccess」に以下の3行を追加してやります。
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
当然のことながら、「.htaccess」は、認証を行いたいPHPページと同じかそれより上のディレクトリに設置します。
今度は「.htaccess」で「Basic認証」を行おうとすると、500番エラーになってしまう時があります。
これは「.htaccess」のユーザー名とパスワードが記述されている「.htpasswd」へのパスが間違っているのが原因です。
サイトの公開ファイルが有る場所は、「/home/ユーザーID/www/ 」になります。
なので、「AuthUserFile」の設定は、
AuthUserFile /home/ユーザーID/www/.htpasswd
のような記述になります。
もし、自分で「.htpasswd」を作成したり、パスワードを暗号化したい場合は、PHPで以下のようなページを作成します。
<?php
print crypt("好きなパスワードを入れる" , "12");
?>
"12" には、好きな半角英数字2文字を入れてください。(例では「12」)
このPHPページにアクセスすると、暗号化されたパスワードが表示されるので、「.htpasswd」を作成し、
ユーザー名:暗号化されたパスワード
といった形式で記述して保存すればOK。
例えば
user001:xxxxxxxxx
のような感じ。
最終更新日 2016-09-25 16:04
Sponsord Link
Copyright (c) 家電レビュー All Rights Reserved.
投稿日:2013-12-05 | | |