さくらインターネットのレンタルサーバでWordPressを動かす色々なパターンの話

この度、サイトのドメインを変更しました。
以前までは、https://year.sakura.ne.jp/でアクセスいただいていましたが、7月3日に急遽思い立ち、独自ドメインのhttps://akashima.net/とすることにし、サクッとドメイン変更してしまいました。

そこでふと気付いたのですが、WordPressを運用する上で、https化の対応の話やドメイン変更の話ってみんな結構躓くんだなーと思いましたので、記事化してみることにしました。
あと、最近、WordPressの案件がちらほらあり、新しくWordPressを用意したいんだとか、実は本番環境ですでに動いていて、新環境でも動かさなきゃならないんだ…とか色々案件としてお話を聞いていて、まとめても良さそうだな、と思ったのもあります。

さくらのレンタルサーバでHTTPS化するために必要な設定

さくらのレンタルサーバはちょっと特殊なロードバランサーを利用しているようです。
HTTPS化する上で、 X-Forwarded-Port80 なら httpsに転送する という設定を仕込めば、通常のロードバランサーやAWSで提供されているELBでは問題なく動作すると思います。

.htaccessの設定

さくらのレンタルサーバではどうするかというと、以下のような設定を .httaccessに記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/wp-cron.php$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

通常はX-Forwarded-Portの部分は以下に書き換えていただければ大丈夫です。

RewriteCond %{HTTP:X-Forwarded-Port} 80

wp-config.phpの設定

wp-config.phpの修正も行います。
さくらインターネットはwp-config.phpの設定がやっぱりちょっと特殊です。
require_once(ABSPATH . 'wp-settings.php'); よりも上に記述しましょう。

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

通常のwp-config.phpの設定は、以下のような形で問題ありません。

$_SERVER['HTTPS']='on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

DBの設定を直接修正

mysqlコマンドが使える環境の方はmysqldumpを使って、直接吐き出し、vimやsedなどでhttpsに変更してしまいましょう。
さくらインターネットはmysql系のコマンドは提供されていませんが、コントロールパネルにアクセスすることで、phpMyAdminの利用ができます。
phpMyAdminのエクスポート時にDatabaseをDropするようにしましょう。
実行した時にダウンロードされるsqlクエリを開き、vimやsedなどでhttpsに変えてやればOKです。
改めてimportし直しましょう。

mysqldumpがある場合 

dumpコマンド
mysqldump -u {sqlユーザ} -p -h {DBのホスト情報} --single-transaction --add-drop-table DB名 > ファイル名

importコマンド
mysql -u {sqlユーザ} -p -h {DBのホスト情報} < ファイル名

vimなどのコマンドの利用方法

vimのコマンド
:%s/http:\/\/ドメイン/https:\/\/ドメイン/g

sedコマンドの場合
sed -i -e 's/http:\/\/ドメイン/https:\/\/ドメイン/g' ファイル名

以上でHTTPS化の対応は完了です。

ドメイン変更する場合

ドメイン変更する場合、wp-config.phpの書き換えとmysqlの書き換えを行えばOKです。
.htaccessはちょっと追記が必要で、以下の内容を先頭行に追記すれば、丸っとリダイレクトできる形になります。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/wp-cron.php$
RewriteCond %{HTTP_HOST} 旧ドメイン [NC]
RewriteRule ^(.*)$ https://新ドメイン/$1 [R=301,L]
</IfModule>

サイト移転は楽勝ですね。以上で対応完了となります。
(DNSを管理してる場合は、DNSの書き換えとかあって大変ですけどネーーーー)

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。