この作業が必要になった経緯
ウェブサイト自体は表示されているのに、複数サイトのうち1つだけWordPressの管理画面にだけアクセスできない現象が発生したため。
現象と事実確認
- 昨日までは管理画面にアクセスが可能だった
- 新しくプラグインを複数インストール・有効化した
- 既存のプラグインをアップデートした(もしくは自動更新をオンにしていた)
解決方法
1.プラグインを無効化する
FTPソフトでWordPressをインストールしているディレクトリから「wp-content」を確認し、ローカルにバックアップしたうえで「plugins」内のプラグインディレクトリをリネームして無効化する作業です。
エラーは新規インストールしたものが原因の場合が多いので、そのプラグインのディレクトリ名を「hoge」から「hoge000」などに変更すると、無効化できます。
無効化後、ログインができた場合は、該当するプラグインを無効化もしくは削除で対応します。
2.1をしてもアクセスできない・SiteGuardを新規インストール/設定していた場合
SiteGuardは不正アクセスを防止する優秀なプラグインである一方、設定を間違えると上記1の作業をしても管理画面にアクセスができなくなり、404エラーのままの状態が続くことがあります。
これはSiteGuardそのものを無効化しても起こりえます。
.htaccessの記述を削除

管理画面>SiteGuard>管理ページアクセス制限 のページでこの設定を有効にしていた場合、「.htaccess」の記述をコメントアウトするか削除する必要があります。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^404-siteguard - [L]
RewriteRule ^wp-admin/css - [L]
RewriteRule ^wp-admin/images - [L]
RewriteRule ^wp-admin/admin-ajax\.php - [L]
RewriteRule ^wp-admin/load-styles\.php - [L]
RewriteRule ^wp-admin/site-health\.php - [L]
RewriteCond %{REMOTE_ADDR} !^XXX\.XXX\.XXX\.XXX$
RewriteCond %{REMOTE_ADDR} !^XXX\.XX\.XXX\.XX$
RewriteCond %{REMOTE_ADDR} !^XXX\.X\.X\.X$
RewriteCond %{REMOTE_ADDR} !^::1$
RewriteRule ^wp-admin 404-siteguard [L]
</IfModule>上記14行目のRewriteRule ^wp-admin 404-siteguard [L]の前に#を入れ、コメントアウトし無効化します。
そのあと、管理画面に入れていた場合は、「管理画面>SiteGuard>管理ページアクセス制限」の設定を無効にすれば、.htaccessも書き換えが行われ、アクセスが可能になります。
管理ページアクセス制限の設定ページにも記載がありますが、
管理ページ(/wp-admin/以降)に対する攻撃から防御するための機能です。ログインが行われていない接続元IPアドレスに対して、管理ページのアクセスを、404(Not Found)で返します。ログインすると、接続元IPアドレスが記録され、当該ページのアクセスを許可します。24時間以上ログインが行われない接続元IPアドレスは、順次削除されます。この機能を除外するURL(/wp-admin/以降)を指定することができます。
wp-admin/admin.php?page=siteguard_admin_filter
という重要な事柄がありますので、この設定には注意してください。IP制限は、SiteGuardで設定するよりも、別途.htaccessに加筆して固定IPのみのアクセスを許可するやり方がおすすめです。(ルータの再起動のたびに変更が必要ですが…)こちらは別の記事で連携いたします。


コメント