WordPressには投稿ページごとにパスワード認証をさせることができますが、ウェブサイト全体にパスワードをかけることはできません。
BtoB専用のウェブサイト、限定コンテンツを公開しているページなど、特定の人しかアクセスできないウェブサイトを作成するには、BASIC認証をかけることでウェブサイト全体にパスワードをかけることができるようになります。
ちなみにWordPressだけの話ではなくて、HTMLだけの静的なサイトにもBASIC認証をかけることはできます。
CONTENTS
BASIC認証とは
BASIC認証とは、ユーザー名とパスワードのみを使った認証方法で、ウェブサイトに設置したユーザー名とパスワードが実際に入力されたものと合致すればページが表示されます。
こんな感じのやつですね。
BASIC認証をかけるのに特別な知識は必要ありませんが、FileZillaなどのFTPクライアントを使ったファイルの操作ができることが前提です。
サンプル
サンプルを見てみましょう。
BASIC認証をかけているページを作成したので、下記からアクセスしてください。
アクセスするとユーザー名とパスワードを要求されるので、ユーザー名には「Designer」、パスワードには「123」を入力してみてください。
正しく入力されるとページが表示されて、正しく入力されないとページが表示されません。
またユーザー名もパスワードも大文字/小文字が判別されるので、「Designer」と「designer」は別のものになります。今回のサンプルの場合、「designer」と入力してしまうと認証を通過できません。
.htpasswdを作成する
BASIC認証をかけるには「.htpasswd」と「.htaccess」の2つのファイルが必要ですので、まずは.htpasswdを作っていきましょう。
VSCodeなどコードエディタを開き、下記のように記述します。
UserName:Password
「UserName」にはユーザー名、「Password」にはパスワードを入力しますが、どちらも適当でだいじょうぶです。
例えばユーザー名を「Designer」、パスワードを「123」にする場合は下記のようにします。
Designer:123
パスワードを暗号化する
ユーザー名はそのまま平文のまま使えますが、パスワードは暗号化しないとBASIC認証が通りません。パスワードを暗号化する方法はいくつかありますが、下記のサイトを使うことで可能です。
ユーザー名を「Designer」、パスワードを「123」にした場合、「123」を暗号化しているため実際は下記のような形になります。
Designer:9DCEnEbtJQ5HY
ファイルを保存する
ファイル名を「.htpasswd」にして保存しますが、Windowsを使っている場合は「.htpasswd.txt」となって保存されることが多々あります。これだとBASIC認証が使えないので、ファイル作成後に「.txt」を削除して「.htpasswd」となるようにしておきましょう。
.htpasswdファイルをアップロードする
ファイルを作成できたらwp-contentなどがある階層にアップロードしましょう。wp-contentの中ではなく同じ階層です。
.htaccessを作成する
.htpasswdが無事にアップロードできたら、次に「.htaccess」ファイルを作ります。
.htaccessがすでにルートディレクトリに存在している場合は、それをダウンロードしてファイルの最上部に下記を記述しましょう。
AuthUserFile /.htpasswd AuthGroupFile /dev/null AuthName "BASIC認証" AuthType Basic require valid-user
AuthUserFileを編集する
AuthUserFileには.htpasswdをアップロードした場所のパスが必要です。俗に言う「フルパス」ですね。
フルパスはサーバーのダッシュボードから見ることもできると思いますが、面倒くさい/サーバーのダッシュボードにログインできないという方は、下記からpath-search.phpをダウンロードして.htpasswdと同じ階層にアップしてみてください。
アップしたあとにpath-search.phpにアクセスするとフルパスが表示されますので、AuthUserFileに貼り付けましょう。
例えばフルパスが「/home/users/000/web/」だった場合は下記のようになります。
AuthUserFile /home/users/000/web/.htpasswd
トラブルシューティング
BASIC認証はちょっとしたことでエラーになってしまうことがあります。ケアレスミスがほとんどなので、もし困ったら参照してみてください。
500 Internal Server Errorになる
500 Internal Server Errorになる場合、ほとんどがAuthUserFileフルパスの記述ミスです。スラッシュが適当な場所に入っているか、「.htpasswd」のドットの入力漏れがないかを確認してください。
ユーザー名とパスワードは合ってるのにループする
ユーザー名とパスワードは合ってるのに入力画面がループする場合は、.htpasswdのパスワードが平文で入っていることが多いです。.htpasswdのパスワードは必ず暗号化しておきましょう。
Unauthorized = 許可されていない表示が出る場合は、ユーザー名かパスワードのどちらかが間違えています。全角/半角と大文字/小文字はすべて区別されるので、合っているか確認しましょう。
さいごに
BASIC認証はとても簡単に設置ができるので、会員制のサイトや検索に引っかけたくない環境などではとても有用です。ぜひ覚えておきましょう!