Let’s Encryptなどで証明書を取得してSSL化したWordPress。
そこまではいいのだけど、非SSLのアドレスにアクセスできちゃったりしてませんか?
”常時SSL化”するためには証明書を取得するだけではなくて、暗号化されていないURLにアクセスさせないことも大切です。
KUSANAGIのnginx環境でなら、/etc/nginx/conf.d/ディレクトリの【プロファイル名】_http.confに1行追記するだけで常時SSL化ができます。
KUSANAGIコマンドで一発でできるようです(後述)。
まず編集するのは【プロファイル名】_http.conf。
server {
listen 80;
server_name 【ホスト】 www.【ホスト】;
access_log /home/kusanagi/【プロファイル名】/log/nginx/access.log main;
error_log /home/kusanagi/【プロファイル名】/log/nginx/error.log warn;
この下あたりに次の1行を追記します。
return 301 https://$host$request_uri;
ちなみにApacheの場合は1行ではありませんが、.htaccessファイルに以下を追記すればOKです。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://【ホスト】/$1 [R=301,L]
これで、http://へのアクセスは全てhttps://に301リダイレクトされるようになりました。
KUSANAGIコマンドで一発でできることを、この記事を書いた後に知りました……。
ちゃんと調べてから記事書こうね。
お恥ずかしや
ターミナルから、KUSANAGIコマンドを打ち込みます。
# kusanagi ssl --https redirect 【プロファイル名】
_人人人人人人人人人人人_
> たったこれだけ!! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
/etc/nginx/conf.d/【プロファイル名】_http.confを開いてみると、コメントアウトされていたSSL ONLYの行が有効になっていました。
rewrite ^(.*)$ https://【ドメイン名】$request_uri permanent; # SSL ONLY
rewrite ^(.*)$ https://www.【ドメイン名】$request_uri permanent; # SSL ONLY
コマンド実行で設定のリロードまで行ってくれていたので、打ちっぱなしでOK。
なんて親切なんでしょ……。