Parallax Image

Cutls Code Archives


SNZ 2016

WordPressのSSL化

カテゴリ:Code Archives, WordPress, サーバー 投稿日:2016年8月5日

ん?これ、SSLじゃないぞって…
管理画面だけです。

緊急編集
書いてることが全面的に間違ってました

理由:証明書がLet’s Encryptだからもし証明書切れたらアクセス不能になる。別にただのブログっぽいサイトだしSSL要らん
どうしてもって人はアドレスバーをhttpsにしましょう。外部CSS,JSも全てSSLに対応させてます。

じゃあなんでSSLにしたんだ?:それは次回以降の記事の執筆に必要だったから。お楽しみに

で、とりあえずただ管理ページのアドレスをhttpsにしてみたわけですが、すると外部のWPリソースがSSLじゃなくて背景が真っ白になりました…
調べると、wp-config.phpに、

define('FORCE_SSL_ADMIN', true);

を入れろと出てきたので入れてみる。

リダイレクトの嵐。

また調べると公式がその下に、

define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
       $_SERVER['HTTPS']='on';

を入れろと言ってきたので、入れた。あかん。
てか、これPHP文法的に間違ってるし。(間違ってません)
$_SERVER[‘HTTP_X_FORWARDED_PROTO’]がhttpsを返したら$_SERVER[‘HTTPS’]もONを返したいってことだろうから・・・って返すことは自明だからもうこのif文削れ!!
結論

define('FORCE_SSL_ADMIN', true);
       $_SERVER['HTTPS']='on';

おしまい。
これ、ifを使わないことによって、WPサーバーから持ってくる外部CSS/JSも自動でSSLになるっぽいです。無理やり$_SERVER[‘HTTPS’]=’on’;にしてSSLになっているかのように誤認させたし

以前httpからhttpsに自動でリダイレクトする.htaccessを作ったら反応しなくて、結局調べて

RewriteEngine on
   RewriteCond %{ENV:HTTPS} !^on$
   RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
   RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

を書いて終わったんですが、やっぱりなんかさくらのSSL系はなんかあるんですかね…

高性能な自鯖が欲しいと思った瞬間でした。