
ちょっと特殊なパターンで、既にwordpressがあるディレクトリのさらに下層にwordpressを置く場合の注意点だよ!



public_html/1つ目のwordpress/2つ目のwordpressのような構造だね。



こういう時は得てしてトラブルが起きやすいね…
今回の記事は「wordpressを色んな所に設置するのに慣れている人向け」です。特殊な置き方を求められた際に、急に起きてしまったトラブルを解決できるよう、記録しておく意味合いが強い投稿です。
謎の現象
さて、下層ディレクトリにファイルを設置、データベースのURLもしっかり置き換え。これで問題なく動作するはず…と意気揚々とアクセスしてみた束の間、読み込みが終わりません。
何かと思えば、リダイレクトループ が発生しています。
こういったとき、皆さんは色々な手段をもって解決しようとするでしょう…
模索した解決法
筆者は様々なことを試行しました。
開発者ツールの確認
まずはこちら。開発者ツールのネットワークタブを見れば、どういう流れでページが取得されているかわかりますね。
ひとまず、「ページがものすごい回数取得されている」ことがここでわかりました。「リダイレクトループ」が発生しているなという情報をGETしています。
しかし、原因まではわからずといった具合です。
クッキーや履歴の削除
ブラウザでアクセスしているときに何かしらの不具合がある時はこれも試しましょう。
しかし、今回のトラブルではこれでは解決しませんでした。
ブラウザの再起動
基本中の基本、再起動です。今回はこれでもダメでした。
サーバーキャッシュの削除
「サーバー側に何か残ってしまっているのかも…」と考え、サーバーのコントロールパネルから「サーバーキャッシュ」を削除しました。しかし、こちらでも解決せず。
原因
一体何なんだろう?と考えつつ色々と検索してみると、「httpからhttpsにリダイレクトループすることがある」という記事を発見。
そこから原因も見えてきました。
SSL化しているのですが、サーバーの仕様上「一度httpでアクセス」→「wordpressにhttpsにリダイレクトしてもらう」という流れになってしまっていました。
基本的に、ヘッダー情報などから[http」であるかどうかは自動的に判別してリダイレクトを行うかどうかを判定します。
しかし、稀に読み取れない仕様になっている場合があり、「http」できている→「https」にしてリダイレクト→しかしサーバーは「http」で一度アクセスする→ループ突入 という流れになっているようです。
解決方法
httpsの利用を明示的に設定
解決法ですが、とても単純です。
$_SERVER[‘HTTPS’] = ‘on’;
この記述を wp-config.php に入れてください。
ファイル内の記述場所はどこでも大丈夫です。この記述があることで、wordpressは「httpsでアクセスされるんだな」と明示してもらえるのでリダイレクトしなくなります。
注意点
今回筆者の利用したサーバーが偶然にもお名前ドットコムのサーバーだっただけで、同じような構成で他のサーバーを利用している際にこちらの事象が発生する可能性はあります。
その際も、是非この方法を試してみてください。
まとめ
今回は、このようなトラブルと解決があったので、記事として残しました。サブディレクトリに追加でwordpressを設置するという少し特殊な使用をしているのも、こういった現象の原因ではあると考えられます。それでも、こういった配置が求められてしまう時もあると思いますので、何かの解決に役立つことを期待しています。
質問などあれば気軽に書き込んでくださいね♪