経緯
AWSのEC2で構築したWordPressでログインページをデフォルトから変更するためにSite Guard WP Pluginを導入しました。
画面上では有効になるものの、実際にアクセスしてみると以下のような挙動になりました。
- wp-adminにアクセスするとwp-login.phpにリダイレクトされる
- ログインページ変更後のURLでアクセスしようとすると404エラーが返ってくる
ネットで検索すると似たような事象は出てくるものの、解決に繋がりませんでしたが、何とか自己解決したので、同じような状況の人は同じ対処法を試してみてください。
原因
wp-adminにアクセスするとwp-login.phpにリダイレクトされる
SiteGuardの「管理ページアクセス制御」を有効にしないとリダイレクトされるようです。
ログインページ変更後のURLでアクセスしようとすると404エラーが返ってくる
SiteGuardの設定を利用するには、mod_rewriteがロードされている必要があるようです。
つまり、.htaccessファイルの設定が有効になっていないと機能しない様子。
実際にSiteGuardの設定を行うと、.htaccessに設定が書き込まれていました。
今回EC2のAMIはBitnamiを使用しましたが、Bitnamiはデフォルトだとこの.htaccessは有効になっていないようです。
そのため、.htaccessが有効になる設定を行う必要があります。
対処法
.htaccessを有効にするには、httpd.confファイルでWordPressのディレクトリに対して、AllowOverride Allの設定をする必要があります。
ただし、Bitnamiのバージョンによって、このhttpd.confファイルの場所が違うようで苦労しました。
今回私が利用したのは「バージョン 5.9.1-9-r01 on Debian 10」です。(2022-03-01時点でAWSのマーケットプレイスに出てきます)
上記のバージョンだと設定するhttpd.confファイルの場所は下記となります。
(2つありますが、片方だけだと設定反映されなかったため、私は両方設定変更しました。)
- /opt/bitnami/apache2/conf/vhosts/wordpress-https-vhost.conf
- /opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf
具体的な手順は次の通りです。
- TeraTerm等でEC2にSSH接続します。
- 下記コマンドAllowOverride Noneをコメントアウトして、AllowOverride Allを追記する。
# sudo vi /opt/bitnami/apache2/conf/vhosts/wordpress-https-vhost.conf <Directory "/opt/bitnami/wordpress"> Options -Indexes +FollowSymLinks -MultiViews # AllowOverride None AllowOverride All
- wordpress-vhost.confに対しても同じ設定を行う。
- 下記コマンドでapacheを再起動する。
# sudo /opt/bitnami/ctlscript.sh restart apache Restarted apache
apache再起動後、変更後のURLでログインページが表示されるか確認してください。
ちなみに、もしもの時のためにログイン済みのブラウザは残しておき、別のブラウザで試すというやり方をしたほうがいいと思います。もし上手くいかなかった場合に、ログイン済みの画面から設定を元に戻せるので。