WAF・functions.php・.htaccessまで徹底解説(実体験ベース)
突然ログインできない恐怖
「ある日突然、WordPressにアクセスできなくなった。」
そんな経験ありませんか?
- サイトが真っ白に
- 「Access Denied」の文字だけが表示される
- ログイン画面が出てもパスワードが通らない
私もまさにそんな状態に陥り、冷や汗をかきました。
しかし、ChatGPTを活用することで、専門知識がなくても無事に復旧できたのです。
この記事では、私が実際に体験したトラブルとその解決プロセスを、できるだけわかりやすく共有します。
コードを書かない私が直面する一番のデメリットはこの様なトラブルシューティングです。でも安心してください。今はChatGPTがあります。
私と状況が異なる場合でも、エラー情報をコピペしてそのままChatGPTに貼り付けてください。そうすると、的確な指示が得られます。あとはその通りに作業するだけ。
焦らず、粘り強く解決しましょう。
トラブル状況:ログインできない+トップページも表示されない
- 管理画面(wp-login.php)は開くが、ログインできない
- 正しいID・パスワードでも「Access Denied」
- トップページにアクセスしても同じく「Access Denied」
まるで、WordPressそのものがサーバーにブロックされたかのような状態でした。
原因は複合的:WAF設定・.htaccess・index.php・functions.php
以下の複数要因が絡んでいました:
要素 | 問題内容 |
---|---|
WAF設定(PHP対策) | サーバー側の自動ブロック発動 |
.htaccess | WP Rocketの記述との競合、ルール不整合 |
index.php | パーミッションが「000」で読み取り不可 |
functions.php | パスワード変更用の救出コードが残ったまま |
復旧手順:ひとつずつ順番に対応
Step 1:functions.phpで仮管理者ユーザーを追加
FTPまたはXserverファイルマネージャーで、/wp-content/themes/使用中のテーマ/functions.php
を開き、以下コードを追加:
phpCopyEditwp_create_user('仮ユーザー名', '強力なパスワード');
$user = get_user_by('login', '仮ユーザー名');
$user->set_role('administrator');
➡️ サイトにアクセスすると、自動的に管理者権限の仮ユーザーが作成されます。
Step 2:WordPressにログイン → 本来のユーザー修復
仮ユーザーでログインし、本来使っていた管理ユーザー(例:ZUNAI)のパスワードを再設定します。
仮ユーザーは不要なら削除、または権限を下げましょう。
Step 3:functions.phpの救出コードを必ず削除
仮ユーザー作成コードを削除しないと、セキュリティホールになります。
ログイン成功後はすぐに削除を!
Step 4:.htaccessをWordPressデフォルト構成に修正
必要なのは、これだけ👇
apacheCopyEdit# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
ポイント:
- BEGIN/END WordPressのセットは必ず1つだけ
- WP Rocketなどのキャッシュ記述との重複禁止
Step 5:index.phpのパーミッション修正
FTPまたはファイルマネージャーで、
index.php のパーミッションを「644」に設定し直します。
これで読み取り・実行が正しくできるようになります。
Step 6:WAF(PHP対策)を一時OFF → 復旧後再ON
Xserverの「WAF(PHP対策)」を一時的にOFFにして復旧作業を実施。
その後、復旧後は必ずWAFをONに戻してセキュリティを確保!
復旧後にやっておくべき安全対策リスト
✅ 定期バックアップ環境の整備(プラグイン&外部ストレージ)
✅ WAFの項目ごとのON/OFF検証と記録
✅ 不要な仮ユーザー・不要コードの完全削除
✅ .htaccessの記述を定期的にチェック
✅ 2段階認証・ログイン通知機能の導入
実際の失敗から学んだこと
functions.phpを何度も修正する中で、小さなミスをして
「このサイトで重大なエラーが発生しました」
と表示され、サイトごと真っ白になったこともありました。
そのたびにFTPで復元し、冷静にやり直す。
一歩ずつ、諦めずに進めば、必ず復旧できる。
今回、身をもって実感しました。
まとめ
今回の一連のトラブルは、数年前ならクラウドワークスなどで外注依頼していたかもしれません。
しかし、今は正しい情報と、ChatGPTのようなAIサポートがあれば、
自分で復旧できる時代です。
この記事が、同じように困っている誰かの役に立てば嬉しいです。