WordPressには投稿ページごとにパスワード認証をさせることができますが、ウェブサイト全体にパスワードをかけることはできません。

BtoB専用のウェブサイト、限定コンテンツを公開しているページなど、特定の人しかアクセスできないウェブサイトを作成するには、BASIC認証をかけることでウェブサイト全体にパスワードをかけることができるようになります。

ちなみにWordPressだけの話ではなくて、HTMLだけの静的なサイトにもBASIC認証をかけることはできます。

WordPressの表示速度No1!
初心者からからプロフェッショナルまで使えるロリポップサーバーは月額550円から!

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と表示される

Unauthorized = 許可されていない表示が出る場合は、ユーザー名かパスワードのどちらかが間違えています。全角/半角と大文字/小文字はすべて区別されるので、合っているか確認しましょう。

さいごに

BASIC認証はとても簡単に設置ができるので、会員制のサイトや検索に引っかけたくない環境などではとても有用です。ぜひ覚えておきましょう!