ちょっと仕事でwordpressをいじっていたら、特定のページだけでも共有SSLにするという話になった。
AdminSSLというプラグインがあって、それを試していたのだが、どうにもちゃんと動かない。グーグル先生に色々聞いてみたのだがどれもだめ。具体的には、トップページへリダイレクトされてしまうのが直らない。もしくはアクセス不可になる。他のサーバでは同じ事を
原因をさぐってみると、どうやら$_SERVER[‘HTTPS’]のところがonになっていないようだった。Admin SSLは現在のページがSSLになっているかどうかをその変数で判断している。
なので、print_r($_SERVER);にて値を確認してみるも、その値自体がない。他に判断材料としては、$_SERVER[‘SERVER_PORT’]ぐらいか。
ということで、”HTTPS Detection”のところを
もちろんこうしてみました。
が、これでも動作しませんでした。さらに調べると、[解決済み] 独自ドメインから共有SSLを利用したURLへのリンクを参考に、AdminSSLを捨て、テーマのための関数 (functions.php)に自力で書き込んでみることにしました。
参考にした1行は、
if ($_SERVER[‘HTTPS’]) {remove_action(‘template_redirect’, ‘redirect_canonical’);}
なので、このままでは$_SERVER[‘HTTPS’]を参照してるのと同じ事なのでこれをちょっと変更。
if ($_SERVER[‘SERVER_PORT’] != 80) {remove_action(‘template_redirect’, ‘redirect_canonical’);}
こんな風にしてみました。
結果はちゃんと目的のページを表示出来るようになりました。
あとは、テンプレート内のCSSの参照場所やリンクURLなどがめちゃくちゃになるので、何とかすればいい。