web関連

さくらのレンタルサーバーの無料ssl「Let’s Encrypt」を使ったSSL化について

さくらのレンタルサーバーの無料ssl「Let’s Encrypt」を使ったSSL化について

さくらインターネットのレンタルサーバーで無料のssl「Let's Encrypt」をサイトに設定しようとしたときにhttpsにリダイレクト処理するまでに少し手こずったのでメモφ(・ω・ )メモメモ
さくらのレンタルサーバーで無料・有料sslを取得して認証が完了したことが前提

http「s」を打ち込んでみる

認証が通っていたらサイトURLのhttpに「s」をつければ見られるハズなのだが…

このページは動作していません
リダイレクトが繰り返し行われました。
cookieを消去してみてください

ってなんでや!

wordpress側の設定で「WordPress アドレス (URL)」をhttpsにしたら管理画面はssl化されたが「サイトアドレス (URL)」をhttpsにすると「このページは動作していません」と出てサイトが表示されない
httpならサイトが見れる状態

さくらのレンタルサーバーは特殊

さくらのレンタルサーバーでは、ssl化をする際に以下のファイルを編集する必要がある

  • wp-config.php
  • .htaccess

「wp-config.php」を編集してhttpsでサイトを見れるようにして、「.htaccess」を編集してhttpへのアクセスをhttpsにリダイレクトしていきます

「wp-config.php」の記述方法

「wp-config.php」に下記記述を書き込まないとhttpsを打ち込んでもサイトが見れない

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = 'ドメイン名';
    $_SERVER['SERVER_NAME'] = 'ドメイン名';
    $_ENV['HTTP_HOST'] = 'ドメイン名';
    $_ENV['SERVER_NAME'] = 'ドメイン名';
}

「.htaccess」の記述方法

「.htaccess」に以下のコードを貼りつける(貼りつけるだけ)

<IfModule mod_rewrite.c>
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
</IfModule>

このとき# BEGIN WordPressから始まるwordpressの最初からある書き込みより前にリダイレクトの記述を書かないとうまくいかなかった…
実際に書き込むときは以下のようにした。

<IfModule mod_rewrite.c>
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

これで、httpへのアクセスはすべてhttpsへリダイレクトが完了したので後は、テンプレートにあるリンクの修正や投稿記事内の画像のURLの修正したら全てのページのURLが緑色で「保護された通信」になった。

追記20181009:サブディレクトリの場合

サブディレクトリでの運用を考えているならリダイレクトの書き方が違ったので以下に書いています。

最近mixhostに乗り換えて無料のssl化の作業を行ったからか、さくらのレンタルサーバーのssl化が凄くめんどくさく感じる