さくらサーバーのメンテ情報

だいぶ久しぶりの更新になってしまいました・・・

さて、さくらレンタルサーバーをお使い人向けの情報です。
さくらよりメンテナンス情報を公開されています。
さくらレンタルサーバー

SSL化後にhtaccessでSSLへの転送設定を行っている場合、メンテ後にサイトが見れなくなる不具合が出ます。
下記の部分がそれです。

———–
(2019年2月26日追記)
【X_SAKURA_FORWARDED_FOR の環境変数の利用について】
X_SAKURA_FORWARDED_FOR の環境変数を利用されていると、
本件のOSのバージョンアップ以降にページが表示されなくなる不具合が発生する場合があります。
X_SAKURA_FORWARDED_FOR を利用せずにHTTPSを利用いただくようお願いいたします。
———–

■修正前

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://{ドメイン}/$1 [R=301,L]
</IfModule>

 

■修正後

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

 

ある日突然動かなくなるとか怖いんだけど。

さくらレンタルサーバーで無料SSL設定(htaccess)

さくらレンタルサーバーで無料SSLのhtaccess設定する

htaccessを使ってhttpからhttpsへの転送設定!

WordPressであればプラグインがあるようです。
今回はプラグインを使わない方法を採用しました。

htaccessで転送設定

— 通常

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

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

— 追加

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

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>

WordPressのwp-config.phpに下記の設定を追加します。

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

下記のサイトを参考にさせて頂きました。
詳しくは下記サイトをご参照ください。

さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点

htaccessでメンテナンスページ

作成したメンテナンスページにhtaccessで一括で転送する方法

これはApacheのバージョンによって書き方が違ってきます。
バージョンが古いとエラーになりますので、両方記載します。

メンテナンスということでレスポンスコード503で表示したいところですが、
Apacheの仕様で使えない場合は500エラーになります。

Apacheのバージョンが2.2以上であればレスポンスコード503の操作が可能

ErrorDocument 503 /mente2.html
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/mente2.html
  RewriteRule ^.*$ - [R=503,L]
</IfModule>

Apacheのバージョンが2.2以前であればレスポンスコードは300~400の操作が可能

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !=/mente2.html
  RewriteRule ^.*$ /mente2.html [R,L]
</IfModule>

500エラーが出た場合はエラーログを確認しましょう。
そこにエラーの内容が記載されています。
今回の場合は下記のエラーでした。

RewriteRule: invalid HTTP response code for flag ‘R’