WordPressサイトにアクセス制限をかけたいことってありますよね。

会員限定サイトなどの運営時や、セキュリティの面からもサイトにアクセス制限をかけたりします。最もメジャーな手段が「BASIC認証」と呼ばれる認証方法です。

プラグインを使って設定したり、一般的なサーバーなら管理画面からでも設定できますが、当記事では手動でファイルを作成・編集してBASIC認証をかける方法を一から解説いたします。

BASIC認証とは

IDやパスワードを入力しなければ、サイトやページを閲覧できない以下のようなアクセス制限のことです。

BASIC認証の例

弊社でも商品(TCDテーマ)のマニュアルサイトにBASIC認証をかけています。ご購入者様のみが閲覧できるようになっているからです。

なお、BASIC認証をかけたサイトやページは検索結果にインデックスされないので注意しましょう。

特定のユーザーのみが閲覧できればいいサイトや社内マニュアルなど、基本的には閲覧者が限定されていて検索結果に表示する必要のないサイトにBASIC認証をかけます。

ファイルを作成・編集してBASIC認証をかける方法

プラグインを使わずにBASIC認証をかけるには、以下の2つファイルで作業が必要です。

それぞれで必要な作業を解説していきます。

ファイルの編集が煩わしいという方は、サイト全体にパスワードをかけられる以下のようなプラグインもあります。よろしければ参考にご覧ください。

ファイル作成前に必要な作業

Windowsをお使いの方はこの作業は不要です。Macでは「.htpasswd」や「.htpasswd」のような「.」からはじまる名前のファイルはデフォルトのままだとFinder上に表示されません。

そのため、事前にターミナルを使ってファイルの表示設定を変更しておく必要があります。以下をターミナルにコピペするだけでOKです。

defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder

表示設定を元に戻したい場合は、下記をコピペします。

defaults write com.apple.finder AppleShowAllFiles FALSE
killall Finder

「Ctrl」+「Space」や「command」+「Space」で起動するSpotlightなどのランチャーアプリに「terminal」と入力するとターミナルをスムーズに立ち上げられます。

.htpasswdの作成

まずは「.htpasswd」というファイルを作成します。このファイルはBASIC認証に必要なユーザー名とパスワードを設定するためのファイルになります。ファイルを作成するといってもやることは単純で、完成形はこんな感じです。IDとパスワードが暗号化された1行のテキストファイルになります。

「.htpasswd」の例

下記のような便利なツールがありますので、複雑なIDとパスワードを生成して暗号化するだけです。情報が漏洩しないように暗号化は必ず行ってください。

暗号化する前のパスワードは、ログイン時に必要なのでどこかにメモしておきましょう。

【暗号化前のログイン情報のサンプル】
ID:koreusjeun
パスワード:KouhdebdFishainQ

.htaccessへ追記

続いて「.htaccess」というファイルに以下を追記します。このファイルでは、先ほど作成した「.htpasswd」を使ってBASIC認証を行うための作業を行います。

BASIC認証をかけたいWordPressサイトの「wp-admin」と同じ階層にある「.htaccess」を編集します。

「.htaccess」の例

上記のような記述があるので、その上部に以下を追記します。

AuthUserfile /ルートディレクトリからのフルパス/.htpasswd
AuthGroupfile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user

「.htaccess」の中身が下記のようになればOKです。

追記した「.htaccess」の例

これでサイトにアクセスしてみてください。ダイアログが開き、IDとパスワードを求められるはずです。メモしたログイン情報でアクセスできれば、正常にBASIC認証がかかっています。

500エラーでサイトへアクセスできない場合は?

ファイルの内容を間違えていると500エラーとなり、正しいログイン情報を入力してもサイトを表示できなくなります。

多くの場合、「.htaccess」内に記述する「ルートディレクトリからのフルパス」の部分を間違えていることが原因です。筆者もこの部分を間違えていました。

BASIC認証をかけたいサイトをサブドメインや、サブディレクトリで運営されている場合、正確にフルパスを記載しなければ、500エラーが発生してしまいます。

そこで正確なフルパスを確認するために、以下をコピペしたテキストファイルを作ってみてください。ファイル名は任意のものでOKですが、phpファイルなので末尾は「.php」にしましょう(例:「fullpath.php」)。

<?php
echo __FILE__;
?>

できたファイルを「フルパスを知りたいディレクトリ」にアップロードして、ブラウザでアクセスしてみてください。例えば「tcd-theme.com/tcd090」のフルパスを知りたい場合は、「tcd090」というディレクトリに「fullpath.php」をアップ後、ブラウザで「tcd-theme.com/tcd090/fullpath.php」にアクセスします。

すると以下のようなフルパスが表示されますので「fullpath.php」の前までをコピペすればOKです(※以下はあくまでサンプルです)。

/home/サーバID/tcd-theme.com/public_html/demo/tcd090/fullpath.php

正確なフルパスを記載すれば、500エラーは消えるはずです。

エラーが消えて、BASIC認証が機能しているかテストする際は、下記の方法が最も手軽です。

まとめ

2つのファイルを作成・編集して手動でBASIC認証をかける方法をご紹介して参りました。

プラグインを使ったり、サーバーの管理画面を操作して行う方法は簡単ですが、使用しているテーマとの相性やサーバー会社によっても使い勝手が左右されます。

当記事でご紹介した方法を覚えれば仕組みがわかるので、トラブル時にも応用を利かせられるかもしれません。ひとつひとつは難しい作業ではないので、ぜひチェックしてみてください。

プラグインを使ったり、サーバーの管理画面からBASIC認証を設定する方法もあるので、こちらの記事も参考にご覧ください。