先日、ルート直下に本番のWordPress、サブディレクトリに検証用のWordPressという構成でセットアップしたところ、以下の不具合に遭遇しました。
発生した症状
- 固定ページや記事の投稿ができない
- 投稿やページのURLが404になる
- サブ環境にアクセスしたいのに、1回目はルート環境(本番)へ飛ばされる(サブに入れない)
最初は .htaccess を疑って設定をいろいろと見直しましたが、改善せず(=「htaccessを疑っていろいろとした」段階)。
サイト構成(個人情報なしの例)
問題が起きたときのディレクトリ構成はこんなイメージでした。
NG例(サブ環境のフォルダ名に「wp-admin」を含めていた)
/ ← ルート(本番のWordPress)
└─ wp-admin-test/ ← サブ環境(ここに別のWordPressをインストール)※NG
OK例(紛らわしくない名前に変更)
/ ← ルート(本番のWordPress)
└─ stage/ ← サブ環境(ここに別のWordPressをインストール)※OK
原因
サブ環境のインストール先フォルダ名に「wp-admin」を含めていたことが原因。
WordPressの管理画面ディレクトリ名と衝突・誤判定され、リダイレクトやルーティングが不安定になり、投稿不可や404が発生していました。
対処
サブ環境のフォルダ名を「wp-admin」を含まない名称(例: stage, dev, sandbox など)に変更。
これだけで上記の不具合は解消しました。
まとめ(教訓)
- ルートWP+サブWPの構成自体は問題ない
- ただし、インストール先フォルダ名に「wp-admin」を含めないこと
- 迷ったら wp-admin / wp-content / wp-includes といったWordPressの予約/内部ディレクトリ名や、それに類する名称は避ける
チェックリスト(公開前に一度確認)
- サブ環境のフォルダ名に「wp-admin」など紛らわしい文字列を含めていないか
- サブ環境の WordPress アドレス(URL)/ サイトアドレス(URL)が正しく設定されているか
- リダイレクト系プラグインや .htaccess の設定でサブ環境へのアクセスが阻害されていないか(設定を変えた場合はキャッシュもクリア)