レンタルサーバXREAで作ったwordpressサイトのhttps化(SSL対応)がなかなかうまくいかなくて困った。
証明書に問題があるのか?DNSのせい?フォルダ構成?はたまたDBか?リダイレクトの問題か?といろいろあって、解消するまでにやたら手間取った。
現象はこのサイトと同じ。
最終的にhttps化は成功に至ったので、忘れないうちに設定をメモ。同じ状態で困っている人は役に立つかも。
<サイトの情報>
サイトURL:https://www.hoge.shop/crypto/
ドメイン名:www.hoge.shop/crypto/(wwwをつけない場合もサイトURL↑にリダイレクトされる)
rootパス:/virtual/hoge/public_html/crypto
だと仮定して話を進める。
<設定内容>
①旧コントロールパネルにて
・NoDir チェックボックスをONにした。
今回はこの「NoDir」設定が効いたらしい。https化がうまくいかない人は(騙されたと思って)一回試してみるといいと思う。
この「NoDir」が何をしているかというと、今回の例で言えば
rootパス:/virtual/hoge/public_html/crypto/wp-content/index.php
にあるコンテンツは、
サイトURL:https://www.hoge.shop/crypto/wp-content/index.php
でアクセスできるワケだけど、これを
サイトURL:https://www.hoge.shop/wp-content/index.php
としても(crypto無しでも)アクセスできるようにするための設定だ。
https(SSL化)をうまく動作させるにはこの「NoDir」設定が有効みたい。
②新コントロールパネルにて
・①が済んでいれば「Mainと同期」と出るはず。
・無料SSLをONにした。
・wwwあり版と無し版の2つのサイトを用意してどちらも無料SSLをONにした。
・リダイレクトは設定なし。
・Main は SSL化できない(という仕様らしい)。末尾のリンク参照。
③DB設定にて
・siteurlにはwwwあり版のhttpsを書いた。
作業はsshで接続でサクッと済ませた。できない人は何らかのDBツールを使うことになるのだろう(XREAが用意しているtoolか何かあるんじゃなかろうか)
DB作業メモ
mysql> show databases;
mysql> show tables;
mysql> select * from wp_options where option_name LIKE '%siteurl%';
mysql> UPDATE wp_options SET option_value = 'https://www.hoge.shop/crypto' WHERE option_name LIKE '%siteurl%';
mysql> select * from wp_options where option_name LIKE '%siteurl%';
④wp-config.phpにて(XREAにSSH接続して作業)
・wp-config.php に $_SERVER['HTTPS'] = 'on'; を書いた。
ちなみにSSL化がうまくいったあとのwordpressのURL設定はこうなる。
証明書状態
その他参考