Mac上でWordPressの開発環境のURLを変更したところ、ログイン画面からログインしようとするとまた同じログイン画面に戻されてしまうという状態になりました。その対処施策をご説明します。
開発環境をコピーしたかった
MacでApacheのVirtualHostを使い複数のURLで複数環境運営しています。
- http://wp1.localhost
- http://wp2.localhost
みたいな感じです。こういった環境の構築方法については以下で詳しく説明しています。
今回行いたかったのは、検証のためhttp://wp2.localhostいう環境のデータをまるっとコピーして、http://wp3.localhostという環境を作る、というような作業です。
設定を終えて、ログイン画面を表示することができました。
しかし、ログイン画面からログインしようとするとまた同じログイン画面に戻されてしまうという状態になりました。パスワードやIDが間違っているなどのメッセージもなく、ただただ同じログイン画面が表示されます。画面をリフレッシュしただけかのようです。
ただ、その時のURLの最後に reauth=1 というのがついているのが気になりました。
wp-config.phpをいじるだけで直った
色々試行錯誤しましたが、結論から言うと、以下をwp-config.phpに追記してログインしたらログインでき、管理画面が開けました。
1 2 3 4 |
define('ADMIN_COOKIE_PATH', '/'); define('COOKIE_DOMAIN', ''); define('COOKIEPATH', ''); define('SITECOOKIEPATH', ''); |
一度ログインできたら、上記のコードは削除しても大丈夫です。以下の記事を参考にしました。
Redirect loop in wp-login with reauth = 1 (solutions)
正直、理由はよく分かりません。
他に試したこと
以下などを参考に、cookieを削除した方が良さそうというのが分かりました。
【WordPressでログインできないとき】「wp-login.php?redirect_to=」「reauth=1」とか出たときの対処
でもドメインごとにcookieを削除する方法がわかりませんでした。Chrome全体のCookieを削除するのは、色々と面倒なことになりそうなのでやりたくありませんでした。
なので、chromeの「検証」を開いて「キャッシュの消去とハード再読み込み」をするのみでした。この機能はCookieは削除されるかどうかはわかりません。これだと事象はなおりませんでした。
執筆時に調べたところ、ドメインごとにCookieを削除する方法がありました。これをやってみてもよかったかもしれません。
ChromeブラウザのCookie(クッキー)削除方法!全削除と特定サイトの消去手順を解説
あと、一番最初に紹介した記事に、 wp-config.phpに記述されているthe salt cookiesというのを新しいのに変えるという方法が紹介されていたので、やってみましたが変化はありませんでした。以下で新しいthe salt cookiesを生成できます。
https://api.wordpress.org/secret-key/1.1/salt
さいごに
今回はMac上の開発環境での事象でしたが、本番環境のURLを変更する場合にも起こりうる事象だと思います。
同じ事象でお困りの方は参考にしてみてください。