だいぶ久しぶりにWordPressについて書きますw
今回紹介するのは、マルチサイト化したWordPressのサイトを常時SSL化(httpからhttpsに)する方法です。
というのも、マルチサイト化していないWordPressのサイトの常時SSL化の方法はたくさんのサイトで解説してあるのですが、マルチサイト化しているものの情報はだいぶ少なく、中にはWordPressのバージョンの関係で情報が古くなっているものもあったので、今回、自分のために記録しておきますw
SSL化の作業の前に
まずは、テーマやデータベースのバックアップをとり、WordPress本体やプラグイン等にアップデートがあれば、全て更新しておきましょう。わたし自身はSSL化で何か問題が起こったことはありませんが、起こってからでは遅いです。。。
バックアップにはプラグインが便利です。
参考
BackWPup – WordPress Backup PluginWordPress プラグイン | WordPress.org 日本語
まずはサーバー側のSSL設定
今回はエックスサーバーを例にあげますが、基本どこのサーバーでもほぼ同じ手順でできます。
サーバーパネルにログインしたら、ドメインのところにある【SSL設定】をクリックします。
SSL化したいドメインの【選択する】をクリックします。
【独自SSL設定追加】をクリックします。
サブドメインなど設定していなければ、そのまま【確認画面へ進む】をクリックします。
【追加する】をクリックします。
しばらくまつと完了します。
これで、サーバー側のSSL設定は完了です。
WordPress側のSSL設定
サーバー側のSSL化の設定が終わったので、次にWordPress側のSSL化を進めます。
マルチサイト化していないWordPressのサイトであれば、下記の手順でSSL化できます。
- WordPressのダッシュボード|管理画面にログイン
- 【設定】→【一般】
- 【WordPress アドレス (URL)】と【サイトアドレス (URL)】のURLをhttpからhttpsに変更
- 【保存】をクリック
しかし、マルチサイト化されたWordPressのサイトで【サイトネットワークの管理】→【サイト】→【編集】→【設定】といっても、WordPressアドレス・サイトアドレスどちらも入力できない状態になっています。
マルチサイト化していない場合は、普通に入力できます。
ですので、マルチサイトの場合はphpmyadminを使ってWordPressアドレス・サイトアドレスを修正します。
サーバーパネルにログインし、【phpmyadmin】をクリックします。
phpmyadminはMySQLのバージョンにあったものを選択してください。MySQLのバージョンがわからない場合は【MySQL設定】をクリックし、確認してください。
MySQLのユーザー名とパスワードを入力しログインします。
MySQLのユーザー名とパスワードはwp-config.phpファイルに記載されています。
phpmyadminにログインできたら、左サイドバーから【データベース名】をクリックします。
【wp_options】をクリックします。
option_nameのところにsiteurlとhomeがあるので、その行のoption_valueのセルをダブルクリックしてhttpをhttpsに修正します。
これで、親サイトのほうはSSL化が完了しました。
で、子サイトのほうは、phpmyadminでデータベース名をクリックしたときに「wp_2options」とか「wp_3_options」のように数字のついたwp_optionsがあったかと思います。そこから、親サイトと同様にsiteurlとhomeのoption_valueをhttpからhttpsに修正します。
データベースの書き換えができるプラグインがありますが、不具合を起こす事例がありますので、利用する場合はバックアップをとるなど十分に注意してください。(phpmyadminでやれば問題ないのに…
phpmyadmin上でURLの修正を行うと、WordPressの管理画面でもURLが変わっています。
内部リンクの修正|httpからhttpsに
次は内部リンクの修正を行います。
記事内のURL修正
記事内のURLをひとつひとつ確認して修正していくのは、記事数が少なければできますが、SSL化の作業を行ってる方はおそらく、かなりの数の記事がたまっていると思います。
ですので、記事内の文字列を置換できる便利なプラグインを使ってhttpをhttpsに修正します。「Search Regex」というプラグインを使います。検索するとすぐに見つかります。
Search Regexは解説なしでも使えると思いますが、わからない方はこちらを参考にどうぞ。
参考
Search Regexプラグイン(記事やコメント内容を一括置換)WordPressおすすめプラグイン一覧
テーマの修正
次はテーマ内に記載されたURLで絶対パスで書かれたものがあれば、httpをhttpsに修正します。おそらくテーマ内はWordPressのテンプレートタグを使っている場合がほとんどだと思いますので、絶対パスを記載していることは少ないと思います。
気をつけたいのが、ウィジェット内に記載しているURLですね。
.htaccessでhttpからhttpsへリダイレクトの設定
ここまでで、サイトのSSL化は完了しています。
しかし、外部のサイトからのリンクをたどってサイトに来た方は、リンクURLがhttpのままであれば、まだhttpのほうを見ています。なので、.htaccessを使ってhttpからhttpsへ転送させます。
ドメイン直下のディレクトリ(エックスサーバーなら/ドメイン/public_html/)に.htaccessファイルがあるので、その.htaccessに次のコードを追記します。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
追記する場所は、# BEGIN WordPress
の上です。
これで完了です!