さくらサーバーでWordPressをSSL化をした時に、予約投稿の失敗 となる事案がありました。
今回はそんな時の.htaccessでの解決方法をご紹介します。
目次
予約投稿が失敗する原因
WordPressで予約投稿が失敗する主な原因はいくつかあります。
キャッシュ系プラグインを使用している場合
ベーシック認証を使用している場合
アクセスがない
SSL化をした場合
上記のことが大体のエラーの原因でしょう。
予約投稿の失敗を解決しよう
予約投稿の公開にはアクセスが必要
そもそもWordPressの予約投稿が公開される仕組みは、「予約していた時間帯に誰かがアクセスする」ことで公開されるとされています。
つまりサイトに全くアクセスがない状態が続いていると公開がされません。
ほとんどの原因はキャッシュ系プラグイン?
WEBサイトの表示速度を改善するためにキャッシュ系のプラグインを有効化している場合は、一度停止をして予約確認ができるか確認をしてみてください。
キャッシュ系のプラグインは、WordPressの環境によっては、cronの動作が邪魔されてエラーとなる可能性があるよです。
キャッシュ系のプラグインを停止する
SSL化をしたら動作しなくなった
通常予約投稿は、wp-cron.phpというファイルを使用して動作しているようですが、SSLにしたことで正常に動作しないことが原因のようです。
今回僕はこれが原因でした。使用していたサーバーはさくらサーバーです。
さくらサーバーでは、.htaccessで解決できるとのことだっ他ので、.htacsessによるリダイレクト設定で今回は解決をしました。
.htaccessで解決(さくらサーバーの場合)
RewriteEngine Onの次に RewriteCond %{REQUEST_URI} !^/wp-cron.php$ の記述をします。
この記述をすることでリダイレクトから除外し、エラーを回避することができます。
1 2 3 4 | RewriteEngine On <span style="color: #ff0000;">RewriteCond %{REQUEST_URI} !^/wp-cron.php$</span> RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ https://hogehogehoge.jp/$1 [R=301,L] |
サブディレクトリの場合
もしWordPressをサブディレクトリにインストールしている場合は、記述が異なります。
例えば、「/wordpress」のディレクトリにWPをインストールしている場合は、
1 2 | <span style="color: #ff0000;">RewriteCond %{REQUEST_URI} !^<strong>/wordpress</strong>/wp-cron.php$ </span> |
といった書き方になりますので注意してください。
以上、予約投稿の失敗の解決方法でした。