さくらのレンタルサーバでSSLを有効にするとJetpackが連携できない

wordpress.comからさくらのレンタルサーバに移転して2ヶ月が過ぎたわけですが。

移転当時から常時SSL化を行っています。

そのせいか、wordpressで1、2位を争う人気プラグイン「Jetpack」がうまく連携できませんでした。

正確に言うと、連携はできるもののwordpress.comで見ると「サイトにアクセスできません」と表示されてプラグインの一覧などが取得できないんです。

■試してみたこと

1.国外IPフィルタを無効にする

さくらのレンタルサーバは一部のフォルダやファイルに対して国外からのアクセスを遮断する「国外IPフィルタ」と呼ばれる機能があります。
jetpackも国外からのアクセスだと思うので、この機能をオフにしました。
が、効果なし。

2.プラグインを止める

プラグイン同士の競合が原因でうまくいかなかったとの情報があったので、プラグインをjetpack以外全て止めました。
が、効果なし。

3.xmlrpc.phpへのアクセス制御を外す

wordpressのセキュリティを高めるため、xmlrpc.phpへのアクセス制御を行っていました。
しかし、jetpackがxmlrpc.phpにアクセスしているとの情報を得たため、jetpackで使用しているとされるIPやドメインからアクセスできるように変更
がしかし、効果なし。
そのためアクセス制御を完全に外しました。
が、効果なし。

4.htacessを消す

もう何が原因なのかわからなくなり.htacessを完全に削除。
が、効果なし。

5.常時SSL化を廃止

ここまでやってできないという事は常時SSL化が問題であるのは明白です。
しかし、GoogleなどにはhttpsのURLがインデックスされているため、SSLを完全に外すと検索から飛んできた人がサイトにアクセスできなくなってしまう恐れが。
なので、とりあえずhttpでも接続できる状態に変更。
が、効果なし。

6.常時SSL化してないブログを作る

たまたま新しいブログを作ろうと思ったので試してみたところ、非SSLであればJetpackと連携できることを確認。

ということで、原因は完全にSSL。

結論

で結論はといいますと、「wp-config.php」に下記を追加するだけ。

$_SERVER['SERVER_PORT'] = '443';

下記サイトさんに書かれていました。
⇒ 【ワードプレスhttps化:3】さくらのレンタルサーバに入れたワードプレスを完全https化する具体的な方法

全体的にはこんな感じになります。

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = 'www.example.com';
    $_SERVER['SERVER_NAME'] = 'www.example.com';
    $_ENV['HTTP_HOST'] = 'www.example.com';
    $_ENV['SERVER_NAME'] = 'www.example.com';
  $_SERVER['SERVER_PORT'] = '443';
}

どうやらさくらのレンタルサーバのhttps(443)はhttp(80)へのプロキシだそうで、https(443)でアクセスしても内部的にはhttp(80)として動くそうな。

そのためサーバー変数などにhttps(443)としての値が入らず、判別がおかしくなるんだそうな。

なので、わざわざ上記の様にサーバー変数にhttps(443)としての値を代入してあげないといけないらしい。

まぁJetpackが連携できない詳細な原因が何なのかはわかりませんが、一先ず解決したので良しとします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です