なぜかWordPressのログインページが404になったときの対処【Lightsail】

WordPress
スポンサーリンク

昨日まで普通にログインできてたのに・・・

ブログトップにはアクセスできて記事は読める。
でもサイト管理画面に飛ぼうとすると、記事部分が404になって飛ばない。

まだWordPressをいろいろ工事中なので、なにか悪いことしたのかな?
思い当たる節がいっぱいありすぎて、原因の特定ができません!

▼環境
AWS Lightsail ※.htaccessが置けないLightsail特有の記事になってます。
WordPress 5.5-ja
cocoon/cocoon child
SiteGuard WP Plugin導入済み

エラーの推測

さて、対応経緯を追ってみます。

ぐぐってみると、この手のエラーはだいたいSiteGuardが悪さしてるらしい。
確かに、前に別の問題の切り分けでSiteGuardを無効化/有効化したら、
勝手に「ログインページ変更」機能のログインURLが書き換わってて困ったことがあった。
今回も何らかの理由でログインページが書き換わってしまったのだと推測しました。

一時的にSiteGuardを停止する。

切り分け一発目としてSiteGuardを無効化してみよう!!

あっ、管理画面にアクセスできないからプラグインを無効化できない・・・
###GAMEOVER### _(┐「ε:)_

・・・諦めるにはまだ早い!
ちゃんと先人たちはこの壁を乗り越えてました!!
こちらのページを参考にさせてもらいました。
https://blog.saboh.net/pluginoff/

なになに、FTPログインしてpluginsフォルダの中のsiteguardディレクトリをリネームしてあげる。。。と。わあ簡単!ヽ(`▽´)/

SSHでlightsailには接続できてましたので、FTPソフト使うのも面倒だし
mvコマンドでリネームすることにします。
lightsailのwordpressではプラグインは以下のディレクトリに格納されているようです。

/opt/bitnami/apps/wordpress/htdocs/wp-content/plugins

さて、CLI画面でコマンドを打ちます

cd /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins mv siteguard siteguard_renamed

必要かわかりませんが、apacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart apache

wp-adminにアクセスしてみる。

これで、SiteGuardが強制的に無効化されて、https://www.appocblog.com/wp-admin/にアクセスできるはずです・・・できた!
wp-adminにアクセスすると画像認証がないログイン画面が表示されました。

管理画面にアクセスできたら、こっちのもんです。
ログインページを確認するために、SiteGuardを有効化します。
ちなみにこの状態で管理画面のプラグインページをみると、なんかエラーが出てます。
これはPluginsディレクトリがないので当たり前です。

SiteGuardを有効化するにはリネームしたディレクトリをもとに戻せばOKです。

cd /opt/bitnami/apps/wordpress/htdocs/wp-content/plugins
mv siteguard_renamed siteguard

いちおう、apacheを再起動

sudo /opt/bitnami/ctlscript.sh restart apache

管理画面のプラグインページを見てみると、無効化状態で各プラグインが表示されていることを確認できます。SiteGuardを有効化しちゃいましょう!

htaccess.confを書き換える。


そうするとメニューにSiteGuardが表示されるようになるので、ログインページ変更をクリックして、現在のログインページを確認します。

うーん、やっぱりブックマークしてたログインページと違う。変わっとるやんけ!

さて、この状態でアカウントログアウトしようとすると、また404エラーがでます。
このままでは、またログインできなくなってしまう。。。。
そうです、たしかhtaccess.confにログインページ向けのRewriteRuleを書いてました。
書き換えましょう!

sudo vi /opt/bitnami/apps/wordpress/conf/htaccess.conf

<Directory "/opt/bitnami/apps/wordpress/htdocs/">
RewriteRule ^login_000000(.*)$ wp-login.php$1 [L]
</Directory>

※000000の箇所はマスキングしてますが実際はsiteguardで確認した数字を入力します。

再び、apacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart apache

これでログインページは正常に表示されるようになりました。

まとめ

1.原因は不明だけど元々有効化していたSiteGuardのログインページ変更が誤作動して、意図せずログインページが変更されていた。
2.ログインページの文字列を確認するため、一時的にSiteGuardを停止し、直接wp-adminにアクセスした。
3.htaccess.confを書き換えた

コメント

タイトルとURLをコピーしました