- IT総合
- 2018-09-22 - 更新:2022-05-29
さくらインターネットで常時SSL化した際に起こる弊害について、
限られた条件下ではありますが、解決法を見つけたので書いておきたいと思います。
まずルートディレクトリになんらかのWEBサイト(WordPressでも何でも)を運用しているとします。
そして下層ディレクトリにWordPressをインストールし、オプションのサブドメインを使用している場合のお話です。
例)test.achoo.jpというサブドメインでルートディレクトリを/achoo/に設定
さくらインターネットのサーバーで共有SSLを利用する場合、SSLを設定できるのは
デフォルトのサブドメインのみです。
オプションのサブドメインで下層ディレクトリをルートディレクトリとしている場合には
対象外となります。
常時SSL化を有効化し、下層ディレクトリのWordPressのサブドメインにアクセスしてみると
SSLに対応していないのにSSLでアクセスさせられます。
設定のURLをhttpで設定していても、ちゃんと表示できるのはトップページだけでした。
サブページに関してはHTMLは問題なく読み込めているものの、内部のCSS等の読み込みのパスがSSL化されてしまって読み込めない状態になっていました。
色々調べても有用なものがなく、.htaccessも触ってみたりしましたがなかなか解決しませんでした。
最終的に行き着いたのが、wp-config.phpに無理矢理SSLではないと設定を記述することで解決しました。
解決方法
解決方法はwp-config.phpに以下を追加します。
$_SERVER['HTTPS'] = 'off'; $_ENV['HTTPS'] = 'off';
これで解決!と思ったところ、ログインしようとすると
「このページにアクセスする権限がありません。」と表示されダッシュボード(管理画面)が表示されません。
対処法は、先ほど追加したHTTPSオフの設定の記述を
require_once(ABSPATH . 'wp-settings.php');
よりも前に書く、でした。
※ただし、共有SSLを利用し、さくらのSSL化プラグインを使った場合はその限りではないようです。
サブドメインでもSSL対応
常時SSLが当たり前になった今、さくらインターネットがサブドメインにもSSLに対応しているんじゃないか?と管理画面で確認してみると、案の定対応していました。※2018年8月から対応
前述のwp-config.phpに書き込んだHTTPSをoffにする内容を削除し、サブドメインに対して共有SSLを有効にするよう設定。
無事にSSL化に成功しました。