今回は .htaccess というものを使ってみます
そもそもApacheを使ったウェブサーバーの設定のためのhttpd.confファイルはサーバー管理者のみしか編集できないので、
一般ユーザーがサーバーを制御したいときには詳細設定を書いた.htaccessを使うのが一般的らしい
.htaccessファイルを置いたディレクトリ以下のディレクトリでのみ設定が有効になるらしい
.htaccessを多重に置いたりできるらしいけど、めんどくさくなるだけなので今回はパス
サーバー管理者が.htaccess使用を制限している場合もあるらしいので、要確認
■ index.htmlがない場合のサーバーの設定
実際に.htaccessを使ってパスワード要求をしていく前に1つ確認しておく、
ディレクトリにindex.html場合、サーバーはどう対応するかについて
1. ディレクトリ内のファイルを一覧にする
2. forbiddenと表示されて一覧しない
のどちらかだと思う。
.htaccessはこのサーバーの設定を変更することができる
某氏曰く、この設定は時と場合によって使い分けるのが良いらしい
今回の目的を考えると、1の一覧できるようにしておくと良さげ。
一覧表示させたいとき、1の場合に相当、
■ パスワードを要求する設定
.htaccessに以下のように書いておく、
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
(2019/05/21 追記)
↑の通りにDebian9のサーバーで試したが「500 Internal Server Error」が発生してうまくいかなかった
前はAuthGroupFile /dev/nullを書いていたが、これを書いているとだめなようなのでひとまず消しておく
AuthUserFile はパスワードを書いておくファイルの位置を示す
絶対パスで書いておく必要がある
AuthName はユーザー名、パスワードを要求するときのポップアップの表示
別に WRYYYYYYYYYYYYYYYYYY とかでも設定上問題はない
AuthGroupFile は、アクセスを許可するグループの情報が書かれたファイルの場所を指定するらしい
とりあえず /dev/null としておけばいいらしい・・・・(もしかしたら不要かも?)
AuthTypeはパスワードの種類、今回はBasicを用いる
require valid-user はパスワードリストに載っているユーザーが正しくパスワードを入力すれば、どのユーザーでもアクセスを許可する設定
他には require user usr2 のように書くと、パスワードリストには100人のユーザーが載っていても、
実際にはユーザーusr2しかアクセスできないようになる
■ 参考
アクセス制限
パスワードは .htpasswd に以下のように書いておく、
その右がパスワードですが暗号化されていて、元のパスワードは「hoge」
間違ってもこんな短い小文字英字だけのパスワードは作っちゃダメですよ?
ユーザーを追加するときは改行して次のように同じように書けばおーけー
パスワードを暗号化するときは htpasswd というコマンドを使うと便利。
■ 簡単な使い方
これで.htpasswdというファイルにユーザー名usr1、パスワードhogeを暗号化して書き込んでくれる
二人以上のユーザーがいる場合は今回必要ではないので調べてません。
他には、ドメイン名やIPアドレスによるアクセス制限もできるそうですが、今回は必要ないためパス
■ 参考 : 設定について詳しく書かれているページ
サーバーの設定をカスタマイズ、よく利用する「.htaccess」の設定のまとめ
ランキング参加中です
↓クリックしていただけると嬉しいです〜