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

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

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

Simplicityサイトが混在コンテンツ状態の例

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

完全SSL対応したSimplicityページのれ

Chromeだとこんな感じ。

Chromeで完全SSL対応したSimplicityサイトの例

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

Search Regexプラグインを用いて置換する方法

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

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

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

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

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

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

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

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

主な手順

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

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

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

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

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

Simplicityサイト(XSERVER)のSSL設定例

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

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

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

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

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

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

Simplicityサイト(http)

変更後はこんな感じ。

Simplicityサイト(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対応」機能を有効にします。

サイトの内部リンクや、非SSLの画像・URLなど、HTTPS化する必要があるURLをSSL対応させて表示させます。(※全てのURLに対応しているわけではありません)

この機能を有効にすることで、以下のような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対応されていない広告」を貼っているので、混在コンテンツページが多々あります。

Simplicityサイトが混在コンテンツ状態の例

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

詳しくは以下。

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

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

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

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

不具合等ありましたらGitHubに、ご連絡いただけると幸いです。

yhira/simplicity2

スポンサーリンク
アドセンス(大)
アドセンス(大)

フォローする

スポンサーリンク
アドセンス(大)

コメント

  1. ともちん より:

    エックスサーバーの新サーバー簡単移行サービスを利用できる順番が回ってきたのですが、SSL化も予定してます。
    順番としては「サーバー移行」→「SSL化」の順がスムーズですかね?

    • アバター画像 わいひら より:

      まだSSL対応していない場合は、その方が良いかもしれません。
      どちらの手順でもできますが、僕ならそっちの順番でします。

  2. shokan より:

    簡単SSLに変換する機能、すごいです!

    本日、Xサーバーの設定も含めて、この手順でやってみたところ、
    Word Press上の画像コンテンツも全てhttpからhttpsにリンクが更新されていて、
    以前とまったく変わらない状態でSSL化できました。
    ありがとうございます!

    アフィリエイトの設定について、二点、教えてください。

    1. 「A8ネット」や「もしもアフィリエイト」などの
    アフィリエイトサイトにアクセスし、
    登録している自身のサイトのURLをhttpからhttpsに変更必要でしょうか。

    2. Amazonや楽天、A8ネット、もしもアフィリエイト、カエレバ、などで
    利用しているアフィリエイトのリンクは、
    更新する必要があるのでしょうか。
    (画像のSSL化とは、リンクの更新が必要ないということでしょうか?)

    • アバター画像 わいひら より:

      1.とりあえず、変更できるなら変更しておいた方が良いかと思います。ただ、僕はこの書き込みを見るまで、そのことに気づかず、ASPの登録URLは古いままにしていましたが、特に何事もありません。なので、変更していないからといって、現状は何かしら問題あるということはないのかもしれません。

      2.それらのタグは、置換されていると思います。ただ、いろいろなケースで利用されている場合があるので、全て正常に置換されている保証までは出来ないです。機能利用後は、ある程度自前でのチェックも行ってみてください。
      (※画像のURLが置換されていなくても、インプレッション関係のものなので、収益発生などへの影響はないと思います)

      もし、うまく置換されていないものがあれば、フォーラムにご報告いただければ、大抵のものならば修正対応できるかと思います。

  3. 主夫ジジ より:

    はじめまして、
    超初心者なのですが、この度、simplicity2にてSSL化にチャレンジして、ある程度は、何とかなりました。

    しかし、グーグルコンソール上で、「updatedがありません。」というエラーが出てしまい、ライブデータで調べたところ、「属性itemtypeの値が無効です」というエラーでした。

    いろいろと調べた結果、

    =============================================

    =============================================
    上の
    「https」の「s」の文字が原因らしいのです。

    そこで、直接、CSS上で、「s」の文字を削除しようと思って、テーマの編集画面から上記の文字の入っていそうなテーマファイルを隅から隅まで見たのですが、見当たりませんでした。

    もしよろしければ、上記の文字の入っているテーマファイルをご教授いただければ幸いに思います。

  4. 主夫ジジ より:

    すみません。コードは、表示されないのですね。
    失礼いたしました。
    フォーラムのほうに伺います。