WordPressのSSL対応に関する情報はたくさんありますが、マルチサイトをSSL化する方法は正確な情報があまり見つからず困ったので、覚え書きとしてまとめておきます。
マルチサイトのWordPressをSSL対応する時の注意点
マルチサイトの場合に押さえておくべきポイントは次の2つです。
- メインサイトのURL変更はデータベースを直接編集する
- .htaccessのリダイレクト処理を記述する順番
ここを押さえておけば、後はシングルサイトのWordPressのSSL対応と同じです。
この記事ではこの2つを詳しく解説していきます。マルチサイトのWordPressのSSL対応で困った人は是非ご覧ください。
メインサイトのURLは管理画面から変更できない
まず、メインサイトのURL変更の件から。
SSLに対応する場合、WordPressの一般設定にある「WordPress アドレス (URL)」と「サイトアドレス(URL)」に設定してあるURLのhttp://
をhttps://
に書き換える必要があります。
ところが、マルチサイトにおける各サイトの一般設定にはこの項目はありません。
ではどこにあるのかというと「サイトネットワーク管理」の方にあります。「サイトネットワーク管理」選んでマルチサイトのダッシュボードを表示させましょう。
左のサイドバーにある「サイト」またはその中の「全てのサイト」をクリックします。
そうすると下図のように登録されているサイトの一覧が表示されます。
一番上だけ「メイン」という文字がついていますが、まずは「メイン」と表示されていないサイトを見てみましょう。各サイトの上にカーソルをもていくとメニューが表示されるので、編集をクリックします。
そうすと、サイトを編集画面が表示されます。そこに「サイトアドレス(URL)」という項目があります。
ここに入力されているURLのhttp://
をhttps://
に書き換えればOKです。メインサイト以外はこの方法で変更することができます。
ところが、「メイン」と表示されるサイトでは下図のようにこの部分を変更することができなくなっています。
「これはどうしたものか?」とWordPressのCodexを見ると次のように書かれています。
注: 以下の手順はシングルインストールの WordPress 向けのものです。WordPress マルチサイトをお使いの場合は、データベースを手動で編集する必要があります。
サイト URL の変更 – WordPress Codex 日本語版
どうやらメインサイトはデータベースを直接修正するかないようです。
データベースのURLを修正する方法
データベースを手動で修正する場合、レンタルサーバーにログインしてphpMyAdiminを使うのが一般的です。
ただ、わざわざレンタルサーバーにログインするも面倒…という場合はWordPressの管理画面からデータベースを修正できる便利なプラグインとしてWP phpMyAdminがあります。今回はこれを使ってみたいと思います。
ここから先の作業はデータベースを直接編集するので危険度が高いです。必ずバックアップをとってから作業するようにしてください。
WPphpMyAdminをインストールして有効化すると次のような画面が表示されます。※このプラグインはサイトネットワークで有効にする必要があります。
「Enter phpMyAdmin」ボタンをクリックするとphpMyAdminが別ウィンドウで開きます。
左にズラッとデータテーブルが並んでいますが、サイトアドレスが入っているのはプレフィックス+opitonテーブルになります。
ワードプレスのマルチサイトでは追加したサイト毎にプレフィックス(wp_など)の後に数字が付きます。ですので数字が付いていないテーブルがメインサイトのものになります。今回のケースではプレフィックスがwp_なのでwp_optionを選びます。
そうするとテーブルのレコード一覧が表示されます。その一番上にあるsiteurlとhomeがそれぞれWordPressアドレスとサイトアドレスになります。レコードを編集するにはEditをクリックします。
レコードの編集画面が表示されるとoption_nameとoption_valueの2つの項目が表示されます。この中のoption_valueにあるURLをhttps://
に修正します。
siteurlとhomeを修正すると次のようになっているはずです。
これで編集は完了です。WordPressの管理画面にもどってメインサイトの情報を確認してみてください。
.htaccessのリダイレクト処理を記述する順番
注意点2番目のリダイレクトについてです。
SSL化した際のリダイレクト処理では.htaccessに下記の設定を加えます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
もちろんマルチサイトも同じなのですが、シングルサイトと比べて.htaccessの記述が複雑になっているからか、上記の設定を書く場所によってはメインサイト以外が上手くリダイレクトされない場合があります。
そのケースを確認してみると、WordPressが書き込んだ設定(#BEGIN WordPress
と#END WordPress
に囲まれた部分)より後に、SSLのリダイレクト処理が書かれていました。
対策はそれより前に書くことです。下記のような感じですね。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
#RewriteEngine On
#RewriteBase /
#RewriteRule ^index\.php$ - [L]
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule . /index.php [L]
.....
もし、リダイレクト処理が上手くいかない場合は確認してみてください。
以上のポイントをさえれば、マルチサイトのSSL対応はそれほど難しくはないと思います。SSL化に対するその他の細かい作業は次の記事に詳しく解説しているので合わせてご覧下さい。
コメント
この記事へのコメントはありません。