必要なファイル
- .htaccess
- パスワード認証を設定する
- .htpasswd
- IDとパスワードのファイル
サイト全体ならば、サイトの直下(トップページと同じ階層)に
.htaccess
AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /home/sample/.htpasswd
require valid-user
このように記述して設置する。
これはサーバーやアカウントで、指定するフォルダが違うので、
AuthUserFile /home/sample/.htpasswd
この部分が、
AuthUserFile /home/exsample.com/.htpasswd
とか、全く違うものだと、こういったものになる。
AuthUserFile /www/user00123456/public_html/.htpasswd
サーバーのパスは、URLと違って分かりづらいので、サーバーのコントロールパネルや、メールなどにとどいたFTPやパスワードなどが記述されている、公開ディレクトリのパスなどを参考にして、それを上記サンプルのように記述する。
サーバーによっては、公開ディレクトリの位置を記載していないとか、ユーザーに明記していないところもある。そういうときは、公開ディレクトリにxxx.php(ファイル名は.phpの拡張子なら何でもOK)などを一時的にアップロードして、そのファイルにアクセスして、ドキュメントルートを確認するといいかも。
ドキュメントルートなどの確認コード
ドキュメントルートを確認するためのサンプルファイルの中身は以下の通り。
<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>
これで、例えば、
/home/sample/
や
/home/exsample.com
といったパスが表示される。
慣れないとよくわからないので、PHPで様々なパスなどを確認するときはこういったコード1行を記述するだけで、サーバーの情報も合わせて知ることができる。
<?php phpinfo(); ?>
注意点
必ず、サンプルのPHPファイルをアップロードして、確認し、必要がなくなったら削除すること。外から丸見えにしておくことで、セキュリティホールを突くということも考えられるため、消しておくこと。
その手の人はそもそも、これが上がっていなくても攻撃可能なレベルの人もいるかもしれないが、あからさまにどういったサーバーやPHPの設定なのかということを表に出しておく必要もあるまいと思う。
.htpasswd
.htaccessだけを準備してしまったままにしておくと、ID・PWの認証ができない。.htpasswdも同じ階層にアップロードする。
最初は同じ階層でいいが、このID・PWも公開されているディレクトリより上の階層に隠しておくということも可能。
ファイルの中身 例)
ID:xxxxxxxxxxxx
abc:xxxxx
.htpasswdファイルの作り方
ID:PWとなっている。PWのほうは暗号化したものでないと、認証できないため、生成できるようなサイトやソフトが有ればそれを使って文字列を作成する。
IDはそのまま記述してよいが、PWは暗号化した特殊な文字列をセットで記述する必要がある。これは、「.htpasswd 生成」などで検索して、生成するジェネレーターサイトなどを探して、そこで生成するのがいい。
ファイル名
.htaccessと.htpasswdともに拡張子のみで、ファイル名がない。そのため、エクスプローラーやデスクトップ上でファイルを作成しようとすると、ファイル名がないと怒られる。これは仕様なので、FTPソフト上で拡張子だけのファイルを作るか、テキストエディタなどで作成する。もしくは、FTPソフトのリモート(サーバー側)にhtaccess.txtなどでアップロードしておいて、.htaccessにファイル名を変更することで、作成できる。