Simplicityの「簡単SSL対応」機能を用いてサイトをSSL化する方法

SSL対応(HTTPS化)するとき何が面倒くさいって、混在コンテンツ対応です。

混在コンテンツとは、サイトをSSL化したときに、完全にSSL対応にならない状態のことです。

完全対応している場合は、Firefoxではこんな感じで表示されます。

Chromeだとこんな感じ。

これを解消する方法として、一般的な方法といえば、Search Regexプラグインを用いて置換する方法があります。

詳しい方法は、以下を参照してください。

エックスサーバーが独自SSLを無料かつ無制限で利用できるようになりました。 この、エックスサーバーの「ユーザー…

ただこの方法は、データベースを置換する必要があるので、多少のリスクがあります。そして面倒くさい。

なので先日、「もっと手軽にできたらなぁ」と以下の方法を以前思いつきました。

以前、WordpressサイトをSSL化する手順を紹介しました。 この中の工程で一番作業が面倒くさくて危険なの…

今回は、上記の方法を、Simplicityの機能に落とし込んだということになります。あと、対応URLもいくつか増やしました。これでかなり、SSL対応が手軽になるかと思います。

今回の機能を用いて、SSL対応する方法について説明します。

今回の機能は、「これからサイトを作る」という方には、ほぼ不要な機能です。これまで、HTTPサイトで長年運営してきたサイトをHTTPS化するとき利用する機能です。
スポンサーリンク

主な手順

WordPressサイトをHTTPSにするのに必要な主な手順は以下です。

  1. サーバー上でSSLの設定をする
  2. WordPressのアドレス設定を変更する
  3. リダイレクト設定をする
  4. Simplicityの「簡単SSL対応」機能を有効にする

サーバー上でSSLの設定をする

まずは、サーバー上でSSLの設定をする必要があります。

エックスサーバーの場合だと、コントロールパネルにログインして、SSL設定をします。

この設定は、サーバーごとに違うと思うので、サーバーの解説ページを参照してください。

WordPressのアドレス設定を変更する

次にWordpressの管理画面から「設定 → 一般」設定を開きます。

「一般設定」にある以下の項目を変更します。

  1. WordPressアドレス(URL)
  2. サイトアドレス(URL)

それぞれのURLの「http」部分を「https」に変更します。

変更後はこんな感じ。

変更が済んだら、設定を反映させてください。

この設定を誤ると、phpMyAdminからデータベースをいじって、元に戻す必要があるので注意が必要です。
ここも、PHPで何とかいけると思うのですが、下手に失敗するとサイトへの影響が怖そうな部分だったので、手動で変更ということにしました。

リダイレクト設定をする

canonicalタグ再設定されていれば、ここまででも良いのかと思いますが、http→httpsページにリダイレクトをして統一したいという場合は、.htaccessの冒頭に以下のコードを追加します。

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

Simplicityの「簡単SSL対応」機能を有効にする

最後に、Simplicityの「外観→カスタマイズ」の「その他」項目から「内部URLをSSL対応」機能を有効にします。

この機能を有効にすることで、以下のようなURL置換が行われます。

  • 内部リンクURLのSSL化
  • Amazonアソシエイト画像のSSL化
  • バリューコマース画像(インプレッション画像)のSSL化
  • もしもアフィリエイト画像(インプレッション画像)のSSL化
  • A8.net画像(インプレッション画像)のSSL化
  • アクセストレード画像(インプレッション画像)のSSL化
  • 古いはてなブログカードの iframe URLのSSL化
  • はてブ数画像のSSL対応
  • 楽天商品画像のSSL対応
  • Google検索ボックスのSSL対応

これだけのURLをSearch Regexプラグインを用いてデータベース置換しようとすると、結構な手間と多少のリスクがあるので、それなりに楽になるかと思います。

今回の機能を用いることによる利点と難点

今回の機能を利用することによって生じる利点と難点は以下のようになります。

利点

思いつく利点は以下。

  • 非SSL URLを手軽にSSL対応させることができる
  • ウィジェット・コメントもSSL対応できる
  • プラグインを用いて何回もデータベース内のテキストを置換する必要がない
  • データベースの内容を変更することがない
  • データベースへの変更がないので比較的安全
  • データベースを変更しないので機能を無効にすれば元に戻せる

また、データベースを誤って書き換えてしまう心配がないので、安心して行うことができます。もし、エラーが出たのなら機能をオフにすればよいだけです。

難点

SSL化手順を安全に短縮する代わりに、以下のような難点があります。

  • 表示前に毎回PHPで置換してから表示するので多少の処理時間がかかる(x/1000秒くらい)
  • 置換対象URLを普通に本文に書いてしまうと置換されてしまう
    (これはプラグインを使用しても置換されます。ただ、プラグインを利用して置換した場合は後から修正して再投稿すればOK)
  • 全ての非SSL URLに対応しているわけではない

今回の方法は、データベースの内容を変更しているわけではないので、Wordpressの本文表示前に、毎回「非SSL URL」を「SSL対応URL」に置換して表示しています。

そのために、表示前に多少の処理時間はかかると思います。ただ、処理にかかる時間といっても0.0XXX秒程度の違いとは思いますが。多少処理に時間がかかっていたとしても、ページキャッシュプラグイン等を利用する事で、表示時間的には全く変わらなくなると思われます。

また、本文中に、置換対象URLが書かれていると、PHPによって置換されてしまうので、置換対象URLがある場合は何かしらの対応が必要になるかと思います。

あと、この機能は、全ての非SSL URLに対応しているわけではありません。ブログなどでよく使われているものには、大方対応しているとは思いますが、全てではないです(僕が気付いたもののみです)。

もし、今回の機能で対応していない、画像URL等があれば、フォーラムにご報告いただければ、対応できるURLならば対応します。

ただ、SSLに対応していないサービスなどもあるので、対応できないケースがあるのもご了承ください。

まとめ

このように今回、「SSLの混在コンテンツを予防する機能」を付けましたが、僕自身は、あまり混在コンテンツは気にしていません。

実際に、当サイトでも「SSL対応されていない広告」を貼っているので、混在コンテンツページが多々あります。

そんな状態で放置しているのは、「Google自体が混在コンテンツなどをランキングの対象としていない。見ているのはURLの最初の5文字だけ」といわれているのもあると思います。

詳しくは以下。

検索結果で、HTTPSページを(多少)優遇するアルゴリズムをGoogleは採用している。このアルゴリズムは、完全に安全な通信ができているかどうかや証明書の有効性を厳密には考慮せず、HTTPSで通信できていさえすれば基本的には優遇を受けられるとのこと。

ただ、全てのページを完全SSL化すると、気持ち良いことは気持ち良いので、サイトのSSL化を考えている場合は、一度試してみると良いかもしれません。

「やっぱやめよう」と思えば、機能をオフにして、設定を逆にたどれば手軽に元に戻せますし。

尚、サイトSSL対応させることによるサイトへの影響(検索ランキングなど)までは責任を負えませんので、今回の方法の利用は自己責任でお願いします。
スポンサーリンク