KUSANAGIでSSLへの恒久的な301をコード1行で実現する

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行を追記します。

【プロファイル名】_http.conf
return 301 https://$host$request_uri;

ちなみにApacheの場合は1行ではありませんが、.htaccessファイルに以下を追記すればOKです。

.htaccess
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.

なんて親切なんでしょ……。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です