WordPressサイトだけってわけじゃないけど、Basic認証を追加する方法。
ディレクトリ構成は、/var/www/cms/wp-adminなどのwpディレクトリファイル群
とする。LAMP環境だが、XAMPPだろうと基本的にやることは同じ。
まずパスワードファイルを作る
パスワード認証だから、まずIDとパスワードを決めないとね。IDとPasswordが対になったリストを作る。
それはテキストで作るんじゃなくてコマンドで作るみたい。テキストだったら平文だしチョンバレになるから。
パスワードを作成する場所は、色々あるみたいだけど、ドキュメントルートより上の階層がいいみたい。
とりあえず/etc直下に解りやすい名前で作ろうと思う。
なので/etcに移動する。
$ cd /etc
ファイルの作り方は下記コマンド。
$ htpasswd -c ファイル名 ユーザ名
今回は
$ htpasswd -c .cmsauth admin
にした。もちろんパスワードを聞いてくるので、適当なものを2回入力する。これで/etc直下に.cmsauthができた。
出来た中身は、
admin:$REAFAfaifoafaRAVAa;otra
のような感じ。adminというユーザー名と暗号化されたパスワードの対。
.htaccessに追記する
さっきのパスワードファイルを読ませてBasic認証する設定。
ドキュメントルートにwp-adminなどのwp関係のフォルダやファイルがあると思うが、.htaccessもあるはず。そこに追記する。
おそらくこんな感じになってるはず。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
末尾にこんな感じで追記する
略 AuthUserfile /etc/.cmsauth AuthName "Please enter your ID and password" AuthType Basic require valid-user # END WordPress
AuthUserfileが、さきほど作ったパスワードファイルの位置を指定している。requireは許可する、valid-userは正当なユーザーという意味。
これでトップページにアクセスしたらIDとパスワードを聞いてきます。
正しく答えられたらいつもの画面がでます。
気付き
パスワードファイルのユーザ追加
結局ユーザを作ろうと入れるだけなのは替わりないのだが、ユーザを色々増やしたい場合。
$ htpasswd パスワードファイル ユーザ名
で追記できる。そのディレクトリにいない場合は、パスワードファイルは絶対パスでファイル名を指定すること。
ただログインしたユーザのIDを取得して内部で処理を振り分けることはするので、やはりIDにも意味があるのかも。
パスワードファイルのユーザ削除
$ passwd -D パスワードファイル ユーザ名
パスワードを入れる頻度
一度性格にパスワードを答えたら次からは聞いてきません。恐らく再起動するか、ブラウザを全て落とすかしないと聞いてこない。
まぁ毎回聞いてきたらうっとおしいので丁度良い。
パスワードファイルが無いのに、.htaccessに設定した場合
サイトにアクセスすると、オタクの管理者がサーバー設定ミスってるから、hogehoge@hogehoge.comに連絡しろと怒られてしまう。
なるほど、httpd.confにあるServerAdminの設定はここで使われるのか。なるほど。ということ。
XAMPPの場合
XAMPPの場合は、コントロールパネルのShellからコマンド入力画面を開けばいい。
AuthUserfileの項目は、C:\xampp\etc\.cmsauthとすればいい。
コメント