SEO対策などで、WordPressのマルチサイト機能を使ってサイトを作る機会もあると思います。
私も、つい最近、マルチサイトでSSL対応をする際に、子サイトがhttpからhttpsにリダイレクトしない事象にハマってしまいました…。
他のブログにも書いてあるサイトがありませんでしたので、解決策をこちらでご紹介させていただきます。
リダイレクトされない原因は?
リダイレクトされない理由としては「.htaccsess」というファイルの記述が間違っている事をまず疑ってください!
「.htaccsess」は、ドメイン直下に格納されています。
「.htaccsess」にてリダイレクト設定
WorPressの場合、一般的には下記のように記述されているのではないかと思います。
# 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] </IfModule>
シングルサイトにて、http→httpsにリダイレクトさせるだけであれば、
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
を</IfModule>の直前にでも入れてあげれば全く問題ないでしょう。
ただし、マルチサイトで同じ表記にしてしまうと、親サイトのみしかリダイレクトされません!それどころか、子サイトのWordPressダッシュボードにログイン出来なくなってしまいます!
では解決策は?
私も、色々試行錯誤しました。また、色んな方のブログも見てみましたが、どこにも載ってませんでしたので、こちらで紹介させていただきます。
解決策は意外に単純なことでした!!
それは、冒頭に書かなければならないのですね!
こんな感じです。
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
はい、これで問題なく、マルチサイトの、親サイトと子サイトでリダイレクトされるようになりますよ!
サイトネットワーク管理者_サイトの設定も忘れずに!
マルチサイトのURLは「設定」→「一般」から変更できません!
マルチサイトのこういったサイト共通の諸々の設定はプラグイン含め、「サイトネットワーク管理者」の項目から変更する形になります。
「サイトネットワーク管理者」→「サイト」と進み、該当サイトのURLをクリックした後に表示される「情報」「設定」タブの中にある、「SiteURL」「HOME」というそれぞれの項目を、「http://xxx.com」→「https://xxx.com」に変えてあげてくださいね。
その後のダッシュボードのログインも「http://xxx.com/wp-admin/」ではなく、https://xxx.com/wp-admin/」ですよー。
まとめ
今回は、「マルチサイトでSSL化をする時に気をつけること」を紹介させていただきました。
他にも皆がお困りになるポイントを紹介していこうと思いますので、お楽しみに!