2026年5月20日
2026年5月20日
WordPressのBASIC認証を設定してサイト全体を保護する方法
はじめに
開発中のサイトや公開前のステージング環境をBASIC認証で保護することで、検索エンジンのクロールや不正アクセスを防ぐことができます。WordPressでのBASIC認証設定方法を解説します。
解決手順(Apache)
ステップ1:.htpasswdファイルを作成する
# サーバーSSH上でhtpasswdコマンドを実行
# ウェブルートの外(/home/username/)に配置すること
htpasswd -c /home/username/.htpasswd your_username
# 追加ユーザーは -c なしで実行
htpasswd /home/username/.htpasswd second_user
# パスワードをオンラインで生成する場合
# htpasswd Generator(例: web2generators.com/apache-tools/htpasswd-generator)
ステップ2:.htaccessにBASIC認証を追加する
# .htaccess(WordPressルートディレクトリ)
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/username/.htpasswd
Require valid-user
# WordPress本体の動作に必要なURLを除外
<Files "wp-login.php">
Require valid-user
</Files>
# REST APIとXMLRPCを除外(プラグインの動作に必要な場合)
<FilesMatch "^(xmlrpc\.php|wp-cron\.php)$">
Satisfy Any
Allow from all
</FilesMatch>
ステップ3:特定ディレクトリのみ保護する場合
# /wp-admin/ のみBASIC認証
# .htaccess を wp-admin/ ディレクトリに配置
# wp-admin/.htaccess
AuthType Basic
AuthName "WordPress Admin"
AuthUserFile /home/username/.htpasswd
Require valid-user
# admin-ajax.php は除外(プラグイン動作に必須)
<Files "admin-ajax.php">
Satisfy Any
Allow from all
</Files>
ステップ4:Nginxでの設定
# nginx.conf または サイト設定ファイル
server {
# サイト全体にBASIC認証
auth_basic "Restricted Area";
auth_basic_user_file /home/username/.htpasswd;
# wp-login.php は認証を維持
location = /wp-login.php {
auth_basic "WordPress Admin";
auth_basic_user_file /home/username/.htpasswd;
fastcgi_pass php-fpm;
}
# REST APIを除外する場合
location /wp-json/ {
auth_basic off;
try_files $uri $uri/ /index.php?$args;
}
}
ステップ5:WordPressからBASIC認証情報を送信する
REST APIやWP-CLIをBASIC認証環境で使う場合:
// wp-config.php — WordPressのHTTPリクエストにBASIC認証を付与
define('WP_HTTP_BLOCK_EXTERNAL', false);
add_filter('http_request_args', function($args, $url) {
if (strpos($url, home_url()) !== false) {
$args['headers']['Authorization'] = 'Basic ' . base64_encode('username:password');
}
return $args;
}, 10, 2);
注意事項
.htpasswdファイルはウェブルート(public_html)の外に配置してください。ルート内に置くとブラウザからアクセスできてしまいます- BASIC認証はHTTPSと組み合わせて使用してください。HTTPではパスワードが平文で送信されます
admin-ajax.phpをBASIC認証から除外しないと、フロントエンドでAJAXを使うプラグインが動作しなくなります
まとめ
WordPressのBASIC認証は .htaccess と .htpasswd ファイルで設定します。admin-ajax.php を除外することを忘れずに、必ずHTTPS環境で使用してください。ステージング環境の保護に最適です。