WordPressのインストール先のURLと、表示させる際のURLが異なるように組み込むことは良くありますが、今回パスワード保護ページのあるWordPressサイトを構築した時に少し困ったことになったのでメモとして書いておきます。
不具合発生前の仕様
- WordPress URL:http://ドメイン/wp
- サイトURL:http://ドメイン/wp
これが初期状態でした。パスワード保護ページを作ったのもこの時点。
次にSSLを導入したので両URLを変更
- WordPress URL:https://ドメイン/wp
- サイトURL:https://ドメイン/wp
httpからhttpsにしただけです。この時も正常でした。
不具合が起きた際の仕様
- WordPress URL:https://ドメイン/wp
- サイトURL:https://ドメイン
ドメインのルートでTOPを表示させる、よくある変更方法です。
WordPressアドレス(URL)とサイトアドレス(URL)を別にする方法
https://www.weluka.me/blog/archives/1045
直後は特に問題なさそうに見えたのですが…。
閲覧端末よって異なる現象
実際起きた不具合の内容というのが、PCでは何故か問題ないが、モバイル端末でパスワード保護ページにアクセスして正しいパスワードで認証しても正常に処理が遷移されないというもの。
しかし、一度認証した後にリンクを利用してパスワード保護ページへアクセスすると、保護が解除された状態で内容を閲覧出来るという不思議な状態。
調査したことと気づいたこと
色々と調査を行っていて最初に見つけた記事、
WordPress パスワード保護したページが開かないときの対処法
http://www.richaranclub.com/blog20130415/
ただ、これだとwpディレクトリのデータを参照出来なくなるだけで根本的な解決にならず。
色々と試行錯誤しながら何度もスマホで問題のあるページにアクセスしていて気づいたのが、ブラウザのURL欄に出る鍵マーク。
これはSSL通信であるかを示すものですが、何故か
- 保護ページへのアクセス時はhttp
- そこで認証するとhttpsになって再度認証画面が出る
- その状態でもう一度認証してリンクを利用して保護ページへアクセスすると内容が閲覧出来る
という良く分からない挙動でした。
対応法
常時httpsで使うことを想定してWordPressの設定していたのですが、サイトアドレス変更時に何故か効かなくなってしまったようです。
ですのでルートディレクトリ(ドメイン直下)の.htaccessに強制的にhttpsへリダイレクトするように設定を追加しました。
httpからhttpsに.htaccessを使ってリダイレクトさせる方法
http://whitebear-seo.com/redirect-https/
最後に
不思議なのはPCでは何ともない事…原因もあやふやな感じですが、モバイル端末でも一発で認証成功して正常に遷移されるようになったので一安心です。