こんにちは、@Manabu です。
WordPressでWebサイトを運用しているとき、特定のページに対してのみBasic認証を導入したい場合がありますよね。
例えば、固定ページ(hiddenページ)を作成し、
hiddenページは、Basic認証を設定して、アクセス制御を行いたい
こう言った場面も出てくると思います。
今回は、Wordpress上の特定ページにのみBasic認証を設定する方法について紹介したいと思います。
ぜひ参考にしてください。
設定方法
今回は、Wordpressサイトの特定のページに対してのみ、Basic認証を設定するということで方法を紹介します。
使用するのは、wordpressのルートディレクトリ(今回は、/var/www/html)の.htaccessファイルです。
※一応全ての手順を記載しますが、Baisc認証の導入手順についての詳細は、以下の記事に記載しているので参考にしてください。
.htpasswdファイルの作成
htpasswdファイルは、Basic認証を行う際に使用されるファイルです。
ユーザー名とパスワードのペアが保存されています。
以下のコマンドを実行することで作成できます。
htpasswd -c /var/www/html/.htpasswd test
.htaccessファイルの設定
こちらのファイルに以下の設定を追加します。
DirectoryIndex index.html index.htm index.shtml index.php index.cgi
Options -Indexes
AuthUserFile /var/www/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
SetEnvIf Request_URI "/path_directory" auth_chk
Satisfy any
Order deny,allow
Deny from env=auth_chk
変更する点としては、2行目の .htpasswd のパスと、8行目の /path_directory のURLを変更するだけで実装可能です。
それぞれ何をしているのか詳細を解説します。
DirectoryIndex index.html index.htm index.shtml index.php index.cgi
ディレクトリにアクセスした際に表示されるインデックスファイルの優先順位を指定します。
例えば、index.html が存在すればそれが表示され、存在しなければ次のファイルが表示されます。
Options -Indexes
ディレクトリリスティングを無効にします。
これにより、ディレクトリの中身(ファイル一覧)がブラウザで表示されるのを防ぎます。
3〜7行目
この5行は、基本的なBasic認証の設定になります。
SetEnvIf Request_URI “/path_directory” auth_chk
リクエストURLが /path_directory と一致する場合、環境変数の auth_chk を設定します。
URLに関しては、例えば、 https://test.com/test-directory などのページに対してBasic認証を設定したい場合、「/test-directory」を入力することで設定できます。
Satisfy any
認証またはアクセス制御のいずれか一つの条件が満たされればアクセスを許可する設定です。
ここでは、Basic認証または環境変数に基づいたアクセス制御のどちらか一方が満たされればよいとしています。
Order deny,allow
アクセス制御の順序を設定します。
deny を先に適用し、その後に allow を適用することで、特定の条件に基づいてアクセスを拒否または許可することができます。
Deny from env=auth_chk
環境変数 auth_chk が設定されたリクエストに対してアクセスを拒否します。
具体的には、/path_directory へのリクエストがこの条件に該当し、アクセスが拒否されます。
まとめ
今回紹介した設定では、/basic-test パスに対してBasic認証を適用し、認証が成功した場合のみアクセスを許可する仕組みを構築しました。
実際の運用では、適切な認証情報の管理と.htpasswdファイルの安全な配置を徹底し、セキュリティ対策を強化していきましょう。