AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

Basic認証で.htpasswdを設置した際に500インターナルサーバーエラーが発生した場合の対処法

Basic認証で.htpasswdを設置した際に500インターナルサーバーエラーが発生した場合の対処法

最近、.htaccessを使ったBasic認証を導入した際に

Internal Server Errorステータスコード500)が発生したので、

対処法を今後の為に残しておきたいとおもいます。

 

.htaccessによるBasic認証Internal Server Error(500)

.htaccessはこんな感じでした↓

 

.htaccess

AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile '.htpasswdのパス'
require valid-user 

 

 .htpasswdは自分で作ったBasic認証用のパスワード暗号化ツールで作成したもの↓

kijimapp.com

 

.htaccessと.htpasswdはBasic認証を行うファイル(test.php)と同じ階層に配置してます。

Basic認証で.htpasswdを設置した際に500インターナルサーバーエラーが発生した場合の対処法

 

Basic認証Internal Server Error(500)が発生した場合に確認すべきところ

 

Internal Server Errorなので、何かしら設定がおかしいっぽいのですが、具体的な内容が把握できなので、とりあえずネットで調べてみることに。

ネットで調べた感じだと、.htaccessを使ったBasic認証Internal Server Errorが発生した場合に確認すべき箇所は以下あたり。

  • .htaccessのフルパスの記述(正しいパスか?)
  • .htaccessと.htpasswdの中身の最後が改行で終わっているか?
  • 設置しているサーバーは.htaccessが利用できるサーバーか?
  • パーミッションが604になっているか?
  • .htpasswdはちゃんと暗号化されているか?

 

.htaccessの.htpasswdのパスが間違っていた

 

一個ずつ確認して行った結果、最終的には.htaccessに記述している.htpasswdのパスが間違っていたようです。

 

サーバーの管理ツールで表示されたパスを記述したのですが、それだとフルパスじゃないからインターナルサーバーエラーが出ていた模様。

 

.htpasswdのフルパスを確認する方法

<?php
//フルパス
echo __FILE__ . '<br />';
?>

.htpasswdの正しいパスを確認する方法を調べた結果、htpasswdと同じ階層に上記のようなPHPファイルを設置してアクセスすれば.htpasswdファイルまでのフルパスを出力してくれそうです。

なので今後.htaccessBasic認証を導入する際、ディレクトリまでのフルパスがわからない場合は、まず同じ階層にPHPファイルを設置してパスを出力し、そのパスを.htaccessに記述するようにするようにしたいとおもいます。