【解決済】ロリポップWordPressのSSL化で無限ループ

今日は技術的なお話です。
ブラウザでサイトにアクセスしたときに、正常に表示されず白い画面の真ん中にこれです。

このページは動作していません
4-i.jpで繰り返しループが行われました。
Cookieを消去してみてください。

ページの自動転送設定が正しくありません

SSL化したときに、このメッセージが出た場合、たぶんCookieを消去しても解決しません。
ロリポップとWordpressで起きた現象ですが、SSLとWordpressの設定の問題なので、
さくらやX SERVERでも起きると思います。
原因は、
http://ほげほげ.com

https://ほげほげ.com
の間で、リダイレクトが無限に起こってしまっている状態です。
SSL化すると「今後はhttpsでアクセスしてちょうだい」ということになるのですが、大抵の場合、これまでサイトを運営してきた経緯でどこかに「httpsでアクセスされたら、うちは対応してないからhttpにしてね」という設定が残っているため発生します。自分で設定した方もいるでしょうが、Wordpressがデフォルトでそうなっていたり、レンタルサーバの設定がそうなっていたりする場合が多いです。

そもそもSSL化ってなんやねん?

という人は順次読んでいただき、それ以外の人は次のパラグラフは読み飛ばしてください。

SSL化のメリット
・サイトの情報と見ている人のやり取りが全て暗号化されるので、お問い合わせフォームとかおいている人は閲覧者に対して個人情報保護の安全・安心をアピールできる。ネット通販やってるサイトだと必須(通常はASPで対応済のはずですけど)
・Google Chromeが、SSL非対応のウェブサイトをハブり始めたので、もしかすると近い将来、対応していないとSEOに影響があるかも

SSL化のデメリット
・サイト表示は少し遅くなる。ただ、大手サイトは軒並みSSL化してきてるので、体感できなくなるのは時間の問題。ハードウェア(=サーバ)が性能向上すれば無問題ということで、気にしなくていいレベルになっていくでしょう。
蛇足ですが、私が現役エンジニアだった頃(15年くらい前)は、SSL化によりサーバ負荷が10倍、つまり単純に言えばサイト表示速度が10分の1になる(実際はそこまで遅くはならなかったですが)と言われていて、同じサイト内でも本当にセキュリティの担保が必要な部分だけSSL化するという、割と曲芸じみたことを普通にやっていました。

スポンサーリンク

SSLの設定方法

ロリポップは、無料SSLがあるので、個人サイトや中小企業のサイトならこれで十分でしょう。SSLにプロフェッショナル版(月額2,000円)がありますが、例えば個人情報を収集するのが日常業務(会員制サイトとか)の場合は、こちらにしましょう。技術的な差異よりも信用の問題と思ってもらえればOK。

やり方をば。
ロリポップでSSL導入

管理画面>セキュリティ>独自SSL証明書導入>無料独自SSLを設定する

でおしまいです。ポチッと押して5分くらい待つと完了です。

で、無限ループが発生しないようにする

以下の3つをやっておけば確実です。
.htaccessの設定とWordpressの設定、wp-config.phpの設定です。

◆1..htaccess

このファイルを直接触るにはFTP(SCP)でサーバに入る必要があります。
通常はPCにクライアントソフトを入れて、テキストエディタで開いて編集してアップロードという手順ですが、ロリポップの場合は、管理画面から入れるので、それで十分です。

ロリポップFTP

管理画面>サーバの管理・設定>ロリポップ!FTP

で、入れます。
前提として、Wordpressをインストールしているのでサイトのドメイン名フォルダがあるはず。
うちだと4-iというフォルダが表示されます。
その下に、.htaccessはあります。

で、このファイルに

< IfModule mod_rewrite.c >
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
< /IfModule >

と書けばOK
すでに存在する、# BEGIN WORDPRESS内の IFModule mod_rewrite.c 内に

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

だけ書いてもOK

簡単に説明すると、
RewriteCond %{HTTPS} off

は、条件文です。その下の命令を実行するかどうか決めます。
「環境変数HTTPSがOffだったら次の命令を実行しなさい」です。

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

は、URLの書き換えルールです。http://でアクセスしてきた任意のURL(=%{HTTP_HOST}%{REQUEST_URI})をとにかくhttps://にしてしまえ、という命令になります。

◆2.Wordpressの設定

WordpressのSSL化

管理画面>設定>一般

です。
ここにhttp://ほげほげ.comと書いてあると思うので、2箇所ともhttps://ほげほげ.comに書き換えます。
もし、すでに無限ループにハマっていて管理画面に入れない場合は、次の3.のおまけを試してみてください。

◆3. wp-config.php

こちらもFTP(SCP)で入って直編集です。ただし、ファイルがリードオンリーになっている場合が多いので(多くのWordpressインストール環境ではそうでしょう)、その場合は先に、オーナーに書き込み権限を付けてください。
権限変更の説明は手抜きしますが、ようするにchmod 600 wp-config.phpです。あとはおググりください。

で、wp-config.phpに書く内容は以下です。
場所はどこでも良いですが、先頭のコメント行の下で良いと思います。

$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';

見たまんまなので、ほぼ説明するまでもないですね。このWordpressは、httpsですよー、という宣言です。

で、おまけです。
もし◆2.が実行できていない場合に、このwp-config.phpへの記述追加で、◆2.と同じことができます。◆2.が対応できるなら、このやり方は非推奨です。何故かと言うとwp-config.phpなんて、めったに触らないので修正したことを忘れるから。

define('WP_HOME','https://ほげほげ.com/');
define('WP_SITEURL','https://www.ほげほげ.com/');

以上です。楽しいSSLライフをお過ごしください。

ブログのタグ