.htaccessでベーシック認証を設定する時に躓いたので、同じ過ちを犯さないようにメモです。
ID・パスワードを求められるも500のエラー
一見うまく行ったのかと思いましたが.htaccessの設定がだめでした。
参考にさせていただきました。そして引用させていただきます。
.htaccessでBasic認証の設定をする方法 | てらこや.work
.htaccess の使い方や書き方・設置方法/ Web Design Leaves
設定内容
ベーシック認証の設定。まずは.htaccessファイルと.htpasswdファイルにブラウザなど外部からアクセスできないようにします。
<Files ~ "^\.(htaccess|htpasswd)$"> Deny from all </Files>
スマートに書いた形<Files ~ "^\.ht">
は、正規表現で「“.ht”で始まるファイル」ということですね。
deny from all
。ややこしくてなかなか覚えられない。この記述ですべて拒否です。
そしてディレクティブの設定。
(ディレクティブを調べたら難しかったです。「命令」?「指示文」?)
ディレクティブ | 説明 |
---|---|
AuthType | BASICを指定すると基本認証 |
AuthUserFile | パスワードファイル名 |
AuthName | 認証名(認証ウィンドウの表示) |
Require | 認証ユーザー(valid-user : ファイルに書かれた全ユーザー) |
AuthGroupFile | ユーザ認証のためのグループファイルを指定 |
AuthType
にはBasic
(Basic認証)とします。Digest(MD5 認証)というのもあるそうです。
AuthName
には"Please enter your ID and password"
と書きました。「IDパスワードを入れてください」という表示の指定ですが、Chromeでは普通にURLが出ました。
Require
には valid-user
。IDパスワードを正しく入力すれば、パスワードファイル(.htpasswd)に記述されている全てのユーザを許可することを示します。valid-user以外には、アクセスを許可するユーザー名やグループ名をスペースで区切って指定します。
AuthGroupFile
には、Require
ディレクティブで Require group
を宣言した場合のみ必要です。利用しない場合は/dev/null
を指定します。
AuthUserFileが間違っていました
あるあるです。「ベーシック認証 500エラー」などで調べてもAuthUserFileのパスは正しいか確認しましょう、ということはよく書かれています。
サーバーのコンパネを確認したから大丈夫!と思っていましたが、見ていたところを間違えました。
ドキュメントルート
ドキュメントルートとはサイトを公開する為に決められた場所(ディレクトリ)になります。また公開されるディレクトリの最上部にもなります。
ドキュメントルートとは?初心者でも分かるように解説! | WP FAN
ドキュメントルートを誤って入れていました。 正しくはAuthUserFileにはサーバーのルートディレクトリからの.htpasswdへのパス(サーバーのフルパス)を入れます。
ルートディレクトリ
一番上のディレクトリ。一番はじめの「/」。
サーバーのルートディレクトリ ≠ ドキュメントルート
です。
サーバーのフルパスを知る方法
今回はサーバー会社のサイトから調べましたが、phpファイルを使って調べる方法があります。
- phpファイルを作成(
<?php echo __FILE__ ;?>
と書く) - 1.で作ったファイルをアップする
- 2.をアップしたファイルへアクセスする
するとブラウザに表示されます。
ポイント
サーバーのフルパスが「/public_html」で始まることはまずない
確かにイメージしても一番上な気がしません。/userや/homeなどでは始まったりします。
.htpasswdを置くところ
.htaccessと一緒に作ることになる.htpasswd。.htpasswdを置く場所は.htaccessと同じディレクトリに置くのはセキュリティ上よくないです。ドキュメントルートより上が望ましいです。
***
.htaccessの書き方は覚えられそうにありませんが、AuthUserFileの書き方はこれで間違えないと思います。