SSL対応サイトを開設したいならmixhostは有能サーバーです。
というのもmixhostでは、SSL証明書世界シェアNo.1のCOMODO社を認証局に採用した、独自SSLを無料で利用でできるからです。
しかも、その利用方法が簡単でネームサーバー変更後、暫く待ってウェブサイトのURLを「http://~」から「https://~」に変更してブラウザで表示させるだけという手軽さです。
また、mixhostは、レンタルサーバーではHTTP/2に対応しているので、SSL化することで、通信効率も上がりページの表示速度も上がります(日本のレンタルサーバーでは初)。
正直、mixhostを利用しているのなら、HTTPSページにしない手はないと思います。
ということで以下では、「WordpressサイトをSSL対応させる方法」について紹介したいと思います。
目次
主な手順
WordPressサイトをHTTPSにするのに必要な主な手順は以下です。
- ブラウザでURLをhttpsに変更する
- WordPressのアドレス設定を変更する
- リダイレクト設定をする
- コンテンツの内部リンク等を変更する(コピペ)
以前エックスサーバーでSSL対応した方法は以下で書きました。
今回の方法は、上記方法より以下の点において手順が簡略化されています。
- mixhostではSSLの設定が不要なこと
- 外部リンクURL等の変更をPHP処理で表示させた(手動で置換が不要になった)
これにより、「面倒なSSL対応」が「少し面倒なSSL対応」ぐらいにはなるかもしれません。
ブラウザでURLをhttpsに変更する
まず、mixhostにサイト作成(及び移行)をすると、ドメイン登録をして、ネームサーバーの変更を行うと思います。
そのネームサーバー設定の変更をすることで、「mixhostでは何もしなくてもSSLが利用できるよう自動設定」されます。
ほんと、ここらへんはサイト運営者は何もする事がありません。
SSL設定の反映を待つ
ただ、SSL設定が反映されるには、ネームサーバーの変更から24~72時間程度必要なので、しばらく待つ必要があります。
ブラウザのURLを変更する
ネームサーバの変更からある程度時間が経ったら、ブラウザのアドレスバーに表示されているURLを「http://~」から「https://~」に変更してページを表示させます。
当サイトを例にすれば「http://nelog.jp/」から
「https://nelog.jp/」にしてブラウザ表示させる感じです。
このように、SSL対応するに当たって、取り立てて運営者がサーバー設定ですることは、何一つありません。
WordPressのアドレス設定を変更する
次に、Wordpressにログインして、管理画面を表示します。
メニューから「設定」→「一般」を選択します。
「一般設定」画面が開いたら「Wordpressアドレス(URL)」と「サイトアドレス(URL)」部分を変更します。
以下のように、httpと表示されているアドレスを
以下のようにhttpsに変更します。
リダイレクト設定をする
あとは、FTPなどで.htaccessファイルを開いてコード上部に、以下をコピペで記入します。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
これは、httpに来たアクセスをhttpsページにリダイレクトさせるコードです。
mixhostサーバーの場合、「/public_html/ドメイン/」にあります。
.htaccessファイルは、編集に失敗するとサイトに重大なエラーを引き起こする可能性がありますので、バックアップを取ってください。何か不具合があった際は、そのバックアップファイルを元に復元してください。
コンテンツの内部リンク等を変更する(コピペ)
ここで通常なら、「Search Regexプラグインを用いて投稿本文内を一括置換する」という手法を用いています。
ただ、それだと手間なので、PHPコードで一括置換できるコードを書きました。
使用中のテーマ(子テーマ)のfunctions.phpに、以下のコードをコピペするだけでOKです。
//コンテンツ内の非SSL URLを表示前にSSL化する function chagne_site_url_html_to_https_ex($the_content){ //httpとhttpsURLの取得 if (strpos(site_url(), 'https://') !== false) { $http_url = str_replace('https://', 'http://', site_url()); $https_url = site_url(); } else { $http_url = site_url(); $https_url = str_replace('http://', 'https://', site_url()); } //投稿本文の内部リンクを置換 $the_content = str_replace($http_url, $https_url, $the_content); //AmazonアソシエイトのSSL化 $search = 'https://images-fe.ssl-images-amazon.com'; $replace = 'https://images-fe.ssl-images-amazon.com'; $the_content = str_replace($search, $replace, $the_content); //バリューコマースのSSL化 $search = 'https://ck.jp.ap.valuecommerce.com'; $replace = '//ck.jp.ap.valuecommerce.com'; $the_content = str_replace($search, $replace, $the_content); $search = 'https://ad.jp.ap.valuecommerce.com'; $replace = '//ad.jp.ap.valuecommerce.com'; $the_content = str_replace($search, $replace, $the_content); //もしもアフィリエイトのSSL化 $search = 'https://af.moshimo.com'; $replace = '//af.moshimo.com'; $the_content = str_replace($search, $replace, $the_content); $search = 'https://i.moshimo.com'; $replace = '//i.moshimo.com'; $the_content = str_replace($search, $replace, $the_content); $search = 'https://image.moshimo.com'; $replace = '//image.moshimo.com'; $the_content = str_replace($search, $replace, $the_content); //A8.netのSSL化 $search = 'https://px.a8.net'; $replace = 'https://px.a8.net'; $the_content = str_replace($search, $replace, $the_content); //アクセストレードのSSL化 $search = 'https://h.accesstrade.net'; $replace = 'https://h.accesstrade.net'; $the_content = str_replace($search, $replace, $the_content); //はてなブログカードのSSL化 $search = 'https://hatenablog-parts.com/embed?url='; $replace = 'https://hatenablog-parts.com/embed?url='; $the_content = str_replace($search, $replace, $the_content); //ここに新しい置換条件を追加していく // //のSSL化 // $search = ''; // $replace = ''; // $the_content = str_replace($search, $replace, $the_content); return $the_content; } add_filter('the_content', 'chagne_site_url_html_to_https_ex', 1);
このコードの詳細や、新たな条件を追加する方法は、以下の記事を参照してください。
このコードを利用すると、手動による置換作業は不要になるので、かなり設定は楽になると思います。うまくいかない場合は、貼り付けたコードを削除するだけで元に戻りますし。
この方法の利点と難点
今回紹介した方法の利点はこちら。
- データベースを書き換えるわけではないので重大な失敗をしづらい
- 失敗したとしてもカスタマイズ箇所を削除すると元に戻る
- 比較的手順が簡単
しかし反面、こんな難点もあります。
- ページを開く毎に毎回置換処理が行われるのでサーバーの負担が多少上がる
- 置換処理の分ページが表示される時間が遅くなる(※今回程度の置換であれば僕の環境で計測したところ0.0何秒未満ではあるけど。またページキャッシュプラグインを使うことで、ある程度対応も可能)
これらを踏まえた上で、サーバーの負荷を増やしたくないのであれば、次で紹介する方法などを行うことをおすすめします。
その他の設定
サイトをSSL化するとそれまで使用していたツールやWEBサービスの設定を変更する必要も出てくるかと思います。
そういった、ツール・サービスの変更については以下に書いてあるので、当てはまるものの再設定をしてください。
まとめ
こんな感じで、当サイトをSSL対応させることができました。
mixhostサーバーのSSLを利用し、「非SSL URLをSSL対応に置換するコード」を利用することで、かなりSSL化手順が簡略化されたのではないかと思います。
やっぱり、mixhostでHTTPS表示するとHTTP/2(通信の効率を良くして表示速度が向上した通信プロトコル)が利用できるので、サイトの高速化にも一役買うのはありがたいです。
mixhostサーバーを利用しているのであれば、これを利用しない手はないと思います。
というわけで「mixhostを利用しているけどSSL対応の仕方がよくわからない」とか「HTTP/2対応されている日本初のレンタルサーバでSSL対応する方法を知りたい」なんて場合は、この記事が参考になれば幸いです。
サイト mixhost
わいひらさん、お久しぶりです。
mixhostを利用している私のサイトでも.htaccess で、http → https のリダイレクトを行っていましたが、どうもこれが、SSL証明書の更新の妨げになるようです。
今朝から、私のサイト(pcguide.jp)でエラーが発生したのでググった所、下記サイトが引っかかりました。
https://hiko.blog/568
mixhostサポート上でも、リダイレクトには、Really Simple SSLの利用を推奨しているようです。
https://support.mixhost.jp/348
先程サポートに連絡しましたが、今現在、SSLの証明書が発行されていない状態が続いています。