2026年5月20日

2026年5月20日

wp-adminだけ403 Forbiddenになるときの原因と直し方(IP制限・プラグイン・WAF)

サイトの表側は普通に表示されるのに、/wp-admin/ や /wp-login.php を開くと「403 Forbidden」になる場合は、管理画面へのアクセスを制限する設定のどれかが、今の自分の接続をはじいていることがほとんどです。この記事では、どこが 403 を返しているかの見分け方と、よくある原因ごとの直し方を説明します。

作業の前に、ファイルとデータベースのバックアップを取っておきます。設定ファイルを直接直すため、FTP・SFTP かレンタルサーバーのファイルマネージャーを使える状態にしておきます。

まず、どこが 403 を返しているかを見分ける

403 の画面の見た目と、サーバーのエラーログで、おおよその発生元がわかります。

見た目・記録 主な発生元
白地に「Forbidden」「You don't have permission to access this resource.」だけ Web サーバー(.htaccess の制限、ファイルの権限)
Wordfence などのプラグイン名が入ったブロック画面 セキュリティプラグイン
レンタルサーバー会社の案内ページ、または WAF によるブロックの記録がある レンタルサーバーの WAF・アクセス制限機能
Cloudflare の画面(Ray ID が表示される) Cloudflare のファイアウォールルール

Apache のエラーログに AH01630: client denied by server configuration があれば、.htaccess やサーバー設定のアクセス制限が原因です。ModSecurity: Access denied with code 403 があれば、WAF(ModSecurity)が止めています。エラーログの場所はサーバーによって異なり、レンタルサーバーでは管理パネルから確認できることが多いです。

あわせて、今の自分の IP アドレスを確かめておきます。ブラウザで IP アドレスを表示するサービスを開くか、ターミナルで次を実行します。

curl -s https://ifconfig.me

原因1: .htaccess の IP アドレス制限

管理画面を守るために「特定の IP アドレスからだけ wp-login.php を許可する」設定を入れていて、自宅や会社の回線の IP アドレスが変わると 403 になります。ルートの .htaccess と、wp-admin/.htaccess の両方を確認します。

Apache 2.4 の書き方では、次のような記述です。

# 例: 203.0.113.10 からだけ wp-login.php を許可している
<Files wp-login.php>
    Require ip 203.0.113.10
</Files>

Require ip の値を今の IP アドレスに書き換えるか、許可する IP アドレスを空白区切りで追加します。直し方がわからない場合は、いったんこのブロックを削除(またはコメントアウト)すれば入れるようになります。

古い Apache 2.2 の書き方(Order deny,allow・Deny from all・Allow from …)が残っていることもあります。Apache 2.4 では互換モジュール(mod_access_compat)がある場合にだけ動き、Require と混ぜると意図しない結果になりやすいため、上の Require ip の形に書き換えます。

wp-admin/ フォルダーの中の .htaccess は、WordPress 本体には含まれていません。自分や制作会社が置いたものなので、中身を確認し、心当たりのない制限が書かれていれば外します。

原因2: セキュリティプラグインのブロック

Wordfence、Solid Security(旧 iThemes Security)などのセキュリティプラグインは、ログインの失敗が続いた IP アドレスや、不審と判断したアクセスをブロックします。自分が誤ってブロックされると、管理画面に入れなくなります。

プラグインを一時的に止める

FTP やファイルマネージャーで、wp-content/plugins/ の中のプラグインのフォルダー名を変えると、そのプラグインは無効になります。

wp-content/plugins/wordfence  →  wp-content/plugins/wordfence-off

管理画面に入れるようになったら、フォルダー名を元に戻し、「プラグイン」画面で有効化し直してから、ブロックの設定を確認します。名前を戻さないままにすると、そのプラグインの保護が止まったままになります。

Wordfence の場合

  • Wordfence のブロック画面には、管理者のメールアドレスを入力してロック解除用のメールを受け取るフォームがあります。ログイン失敗の多さでロックされた場合に使えます。
  • 管理画面に入れたら、Wordfence の「Firewall」の「Blocking」タブで、自分の IP アドレスのブロックが残っていないかを確認して解除します。
  • Wordfence のファイアウォール(WAF)だけを止めたい場合は、wp-config.php の <?php の次の行に次を追加します。Wordfence の「Extended Protection」を有効にしている場合は、WordPress のルートにある wordfence-waf.php の同じ位置に書きます。原因を確認したら、この行は削除します。
<?php
define( 'WFWAF_ENABLED', false );

動的 IP(接続のたびに IP アドレスが変わる回線)では、IP アドレスを許可リストに入れても、次に変わったときに効かなくなります。ログイン失敗の回数制限を緩める、固定 IP や VPN を使うなどを検討します。

原因3: レンタルサーバーの WAF・アクセス制限

レンタルサーバーには、WordPress の管理画面を守る機能が用意されていることがあります。たとえばエックスサーバーには「WordPressセキュリティ設定」があり、国外の IP アドレスからの管理画面へのアクセスを制限する機能などがあります。海外出張中や、VPN・一部のクラウドサービス経由で接続していると、これに当たって 403 になります。

また、レンタルサーバーの WAF(ModSecurity など)は、投稿の保存やプラグインの設定変更の通信を攻撃と誤認して 403 を返すことがあります。管理画面には入れるのに保存だけ 403 になる場合は、こちらを疑います。

どちらも、サーバー会社の管理パネルで設定とブロックの記録を確認し、必要なら一時的に無効にするか、自分の IP アドレスを許可します。WAF を止めたままにせず、原因の操作が終わったら元に戻します。

原因4: Basic 認証の設定の誤り

管理画面に Basic 認証(ユーザー名とパスワードのダイアログ)をかけている場合、パスワードの誤りは通常 401 になります。403 になる場合は、Require の書き方が他の制限とぶつかっていることがあります。wp-admin/.htaccess の基本形は次のとおりです(Apache 2.4)。

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/username/.htpasswd
Require valid-user

# admin-ajax.php はサイトの表側からも呼ばれるので、認証の対象から外す
<Files admin-ajax.php>
    Require all granted
</Files>

AuthUserFile には、.htpasswd の場所を、/ から始まるサーバー上のフルパスで書きます。パスが間違っていると、正しいパスワードを入れても入れません。admin-ajax.php を認証の対象から外さないと、サイトの表側のフォームや絞り込みなど、admin-ajax.php を使う機能が動かなくなります。

原因5: ファイルやフォルダーの権限

wp-admin フォルダーや中のファイルの権限が変わり、Web サーバーが読めなくなると 403 になります。一般的な目安は、フォルダーが 755、ファイルが 644 です(レンタルサーバーによって推奨値が異なる場合は、その案内に従います)。

# 現在の権限と所有者を確認する
ls -ld wp-admin wp-admin/index.php

# フォルダーを 755、ファイルを 644 にそろえる(WordPress のルートで実行)
find wp-admin -type d -exec chmod 755 {} \;
find wp-admin -type f -exec chmod 644 {} \;

wp-admin/index.php が消えている場合も、フォルダーの一覧表示が禁止されたサーバーでは 403 になります。その場合は、使っているバージョンの WordPress を wordpress.org から入手し、wp-admin フォルダーを入れ直します。

原因6: ログイン URL を変更するプラグイン

ログイン URL を変えるプラグイン(WPS Hide Login など)や、セキュリティプラグインのログイン URL 変更機能を使っていると、/wp-admin/ や /wp-login.php に直接アクセスしたときに、設定によって 404 やトップページへの転送になったり、エラーになったりします。変更後の URL がわからなくなった場合は、原因2と同じ方法でそのプラグインのフォルダー名を変えて無効にすると、標準の /wp-login.php に戻ります。ログインできたら、フォルダー名を戻して有効化し直し、設定画面で変更後の URL を確認して控えておきます。

再発を防ぐ

  • IP アドレスで管理画面を制限するのは、固定 IP や VPN など、接続元が変わらない環境に限ります
  • どこに制限を入れたか(.htaccess、プラグイン、サーバーの管理パネル、Cloudflare)を記録しておくと、次に締め出されたときにすぐ外せます
  • セキュリティプラグインやサーバーの制限を二重、三重にかけると原因を探しにくくなります。役割を決めて重複を減らします
  • 管理者のメールアドレスを、今受け取れるアドレスにしておきます(ロック解除やパスワードの再設定に使います)

まとめ

  • 403 の画面の見た目とエラーログ(AH01630 や ModSecurity の記録)で、Web サーバー・プラグイン・サーバーの WAF・Cloudflare のどこが止めているかを見分ける
  • .htaccess の IP 制限は Require ip を今の IP アドレスに直すか、いったん外す
  • セキュリティプラグインはフォルダー名の変更で一時的に止め、入れたらブロックを解除して元に戻す
  • レンタルサーバーの国外アクセス制限や WAF は、管理パネルで設定とブロックの記録を確認する
  • Basic 認証、ファイルの権限、ログイン URL の変更も確認する

関連記事

お気軽にご相談ください

お見積りへ お問い合わせへ
▲