🏡まったのブログ

wp-login.phpに.htpasswdを使用してBASIC認証をかける

ユーザー登録のあるサイト構築していたので、WordPress標準のユーザー登録画面(/wp-login.php?action=register)をアクセス禁止にするためBASIC認証をかけた時のメモ。

基本は以下のサイトの通りだが、.htaccessに記述する.htpasswdへのパスが間違っており 500 Internal Server Error を連発してしまった。

https://wap-log.com/wordpress-minimum-security/#3_Basic

.htaccessの記述

<Files wp-login.php>
AuthUserFile /{ディレクトリ}/.htpasswd
AuthGroupFile /dev/nul
AuthName "Restricted Area"
AuthType Basic
require valid-user
</Files>

この{ディレクトリ}の部分がFileZillaなどのFTPツールのパスや、通常のサイトのURLでも違う。

上記のサイトに確認方法が書いてあるが以下のコードを記述したPHPファイルを同じディレクトリにアップしアクセスして確認する。

<?php
echo __DIR__;
?>

今回はエックスサーバーだったが、以下のようなディレクトリ名だった。

/home/サーバーID/ドメイン名/public_html

.htpasswdの作成

基本は無いので作成する。基本テキストファイルを作成してアップしてから、サーバー上でリネームするとのことだが、Macのテキストエディターでリッチテキスト書類(.rtf)で作成するとバグりそうだったので、htaccessをコピーしてそれをリネームして作成し(.txtファイルになった)、それをアップしてからさらに.htpasswdにリネームした。

User Registration プラグインを使っている場合

User Registration プラグインを使っている場合は Settings > Prevent Core Login のチェックをすることでアクセス禁止にできる。