解決できるかもしれないこと
「WordPressにおいて、設定していないはずのリダイレクト処理を止めること」(検索用)
結論は掲題の通りです。
WordPressのテーマ作成やプラグインの設定、及びWP-FORMなどをご存知の方向けの記事です。
問題の経緯
やりたかったこと
- /hogeにアクセスした時に、/fugaへリダイレクトさせる
- /hogeで表示していたページを/newhogeにアクセスした際に表示させる
やったこと
- Simple 301 Redirectsを導入、/hogeにアクセスした際に/fugaにリダイレクトさせるように設定
- /hogeの固定ページのURLスラッグを/newhogeに変更
- page-hoge.phpをpage-newhoge.phpにファイル名の変更
起こったこと
- /hogeにアクセスして、/fugaにリダイレクトはできた
- /newhogeにアクセスすると、なぜか/fugaに飛ぶ
原因
原因は、/hogeで使用していたWP-FORMの設定をそのままにしていたことです。
具体的に説明します。
WP-FORMは設定画面から、このように入力画面などを決めることができます。
※今は空欄になっていますが、こちらは全て入力済みでした。
根本的な原因は、この入力画面URLのところを/hogeと入力していたままにしていたためです。
本来は、このフォームの使用場所は/newhogeに変わるので、「/newhoge」を入力しなければなりませんでした。
感想や解決の経緯など
ただ、これを画面上で確認しようとすると、/newhogeにアクセスした段階で、なぜか/fugaに飛ぶので意味が分かりませんでした。リダイレクトのプラグインの原因かとも迷いました…。
発見に至った経緯としては、検証ツールのNetworkタブを確認したことが大きなきっかけです。
/hogeから/fugaへのアクセスは301のステータスになっていましたが、
/newhogeにアクセスしてから/fugaに飛ぶまでの挙動を見てみると、綺麗にリダイレクトされているのではなく、page-newhoge.phpでエラー処理が走ってから、/hogeに飛び、さらに/fugaに飛んでいました。
2回りダイレクトされているということですね。
該当のエラーを見てみると、このような表示がされていました。
<div name="contact__form" class="contact__content__tel">
<div class="contact__form">
<script type="text/javascript">
window.location = "https://hogehogehoge.hoge";
</script>
<div id="mw_wp_form_mw-wp-form-xxxx" class="mw_wp_form mw_wp_form_direct_access_error">
このページには直接アクセスできません。
<!-- end .mw_wp_form --></div> </div>
</div>
こいつか…!
で、設定を見に行ったら入力画面を変えていないことに気づいたという所存です。
ページだけが変わると、入力画面で矛盾が起きるので、こういうことになってしまったわけですね。
まとめ
MW WP-FORMを使っているページをリダイレクトさせる際は、入力画面を一緒に修正しましょう。