Localから本番移行後にWordPressにログインできない時の解決法まとめ
こんにちは。いっきー(@ikirin_web)です。
Localで制作したWordPressサイトを本番環境に移行したあと、「ログインできない…」という現象に悩んだことはありませんか?
私もまさにこのトラブルに直面しました。
サイト自体は問題なく表示されているのに、ログイン画面では「パスワードが違います」。
phpMyAdminでの書き換えで一時的には入れるけれど、根本解決にはならず…。
何度も検証を重ねた結果、原因は 「ローカルと本番のディレクトリ構造の違い」 にあることがわかりました。
背景と構成
- ローカル環境: Local by Flywheel
- 本番環境: ロリポップ
- 使用プラグイン: All-in-One WP Migration
- 構成:Local → テスト環境(サブディレクトリ) → 本番サイト(ルート)
最初はローカル環境をルートディレクトリ(public直下)で作成していましたが、本番環境では https://example.com/example のようにサブディレクトリ構成にしたため、移行後にログイン情報が通らなくなってしまいました。
つまずき:ログインできない問題
インポート後、ログイン画面で何度入力しても「パスワードが違います」。
phpMyAdminで直接パスワードを変更すれば入れるものの、根本解決にはなりません。
今まで問題がなかったのに、なぜ今回だけ?
その疑問から再検証を繰り返し、
最終的にたどり着いたのが――
でした。
解決策:ローカル環境でもサブディレクトリを再現する!
手順
① WordPress管理画面で設定変更
一般設定 > 「WordPressアドレス(URL)」をサブディレクトリ名を含むURLに変更
例)http://example.local/example
② Local環境の public 直下にフォルダを作成
例)/example
③ WordPressファイルをそのフォルダに格納
例)public/example/wp-admin など
④ public 直下に .htaccess と index.php を配置
フォルダ構成は次のようになります。
public/
├── .htaccess
├── index.php
└── example/
⑤ index.php にサブディレクトリ名を追記
require( dirname( __FILE__ ) . '/example/wp-blog-header.php' );
⑥ public/example 内にも .htaccess と index.php を配置
.htaccess の RewriteBase と RewriteRule にサブディレクトリ名を追記
RewriteBase /example/
RewriteRule . /example/index.php [L]
⑦ All-in-One WP Migrationでデータをエクスポート
⑧ 本番サーバーのサブディレクトリにWordPressを簡単インストール
⑨ 管理画面でSSL化&不要なデータ削除後、All-in-One WP Migrationでインポート
結果:ログイン成功!
なんと……
Local環境で使っていたユーザー名とパスワードでログイン成功!
「サブディレクトリ構成をローカルで再現」することで、WordPress内部のURL・パス・クッキー情報が一致し、ログインが通るようになりました。
学びと気づき
- サブディレクトリ構成で運用するなら、ローカルでも同じ構造で開発するのがベスト
.htaccessとindex.phpには、サブディレクトリ名を明示的に記述する- phpMyAdminでのパスワード変更は“応急処置”。構造ズレは根本解決にならない
まとめ
| 状況 | 結果 |
|---|---|
| Local:ルート直下 / 本番:サブディレクトリ | ログイン不可(パスワード再設定が必要) |
| Local:サブディレクトリ構成 / 本番:サブディレクトリ | ログイン成功✨ |
今回の経験からわかったのは、「ログインできない問題=WordPress内部URLのズレ」 であることが多いということです。
サブディレクトリ構成でサイトを公開する場合は、ローカル環境でも同じディレクトリ構成を再現しておくことで、トラブルを防げます。
これまでは「ローカル → 本番(どちらもルート直下)」での移行だったため問題ありませんでしたが、今回はサブディレクトリ構成にしたことで、思わぬ落とし穴に気づけました。
構成の違いがログインエラーの原因になるという貴重な経験ができたと思います。
同じように悩んでいる方の参考になればうれしいです!✨
最後まで読んでいただきありがとうございました。