WordPressサイトで外部からのアクセスを拒否するには
WordPressを完全にHeadLess CMSとして使いたい場合など、管理者やログインユーザーなどの一部のユーザーにだけアクセスを許可し、それ以外のユーザーからのアクセスを拒否するニーズがあるかと思います。デフォルトでは、REST API含め、誰でも自由にコンテンツを閲覧できるからです。
これを実現するための方法はいくつかありますが、プラグインを使うのが正攻法で、なおかつ便利です。以下、具体例を交えて有用な方法を3つご紹介します。
ベーシック認証をかける
昔ながらの方法ですが、最も扱いやすい方法です。正しいユーザー名とパスワードを入力したユーザーのみアクセスを許可し、それ以外を拒否します。
.htaccess
ファイルを使う方法がスタンダードですが、設定に手間がかかり、扱いに注意が必要なファイルのため、プラグインを使うことをおすすめします。
私が使用しているのはWP Basic Authenticationで、手軽に使える上に、WP REST APIのページやGraphQLなども認証の対象ページになっているので重宝しています。(画像ページは除外)
パスワード保護をする
ベーシック認証と似た機能ですが、パスワードだけで保護することもできます。
パスワード保護のプラグインはいくつもありますが、使い勝手の良さから個人的に愛用しているのはPassword Protected(無料)です。
設定画面でパスワードを入力するだけで、REST APIやRSSフィードを含めたサイト上のコンテンツをパスワードで保護してくれます。画像ページは除外されますが、HeadLess CMSとして使う場合は逆に良い仕様かと思います。
リダイレクトをかける
そのページが存在していること自体を隠したい、万が一にもパスワード保護を突破されたくない、そういった場合には、別のサイトへリダイレクトをかけるのがおすすめです。代表的なプラグインはRedirection(無料)です。
例えば、example.comがメインページで、wp.example.comがコンテンツ管理サイト(HeadLess CMSとして使うサイト)の場合、wp.example.comへのアクセスをメインページであるexample.comへ転送できます。
管理画面の他に、画像ページもリダイレクトされないため、画像ページを含めた全てのページをリダイレクトして欲しい場合は、他のプラグインを使うか、htaccessなどレンタルサーバー側での操作が必要になります。