zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【さくらのレンタルサーバ+WordPress】異なるバージョンのPHPを利用している時の注意点

【メモ】

qiita.com

上記設定の際、.htaccessによりphp.cgi が読み込まれるようになるので、Wordpressを丸ごとバックアップ(BackWPupなど)してから戻したときはUpLoad後にphp.cgiの権限に実行権をつけること。

【ハマり状況1】WordpressサイトがInternal Server Error

BackWPupで取得したWordpressの環境を別ディレクトリに戻してみたらInternalServerError!
php.cgiの権限に実行権を付ける
→既存のものに合わせて、0715としたら動いた。

【ハマり状況2】BacWPupがToo Many Redirects

上記Wordpressは動いたものの、BackWPupが動かなくなった

  • SNI SSL化している
  • http→httpsへの301リダイレクト処理では「wp-cron.php」をredirectの対象外としている(つもり)

→情報を見るとToo Many Redirectsとなっており、「ジョブが開始されましたが、10秒間応答しません。」となる

【解決】
.htaccessのRewriteCondの条件を以下のようにする

# for BackWPup
RewriteCond %{REQUEST_URI} !.*wp-cron.php$

※ !^/wp-cron.php$だと変更後のPHP(/php.cgi)の処理が挟まるときにマッチしない模様

全体としてはこんな感じ

Action myphp-script /php.cgi
AddHandler myphp-script .php .html

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# for BackWPup
RewriteCond %{REQUEST_URI} !.*wp-cron.php$

# http to https
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
</IfModule>

以上、何かの参考になれば。