
さくらインターネットのレンタルサーバでWordPressを動かす色々なパターンの話
この度、サイトのドメインを変更しました。
以前までは、https://year.sakura.ne.jp/でアクセスいただいていましたが、7月3日に急遽思い立ち、独自ドメインのhttps://akashima.net/とすることにし、サクッとドメイン変更してしまいました。
そこでふと気付いたのですが、WordPressを運用する上で、https化の対応の話やドメイン変更の話ってみんな結構躓くんだなーと思いましたので、記事化してみることにしました。
あと、最近、WordPressの案件がちらほらあり、新しくWordPressを用意したいんだとか、実は本番環境ですでに動いていて、新環境でも動かさなきゃならないんだ…とか色々案件としてお話を聞いていて、まとめても良さそうだな、と思ったのもあります。
さくらのレンタルサーバでHTTPS化するために必要な設定
さくらのレンタルサーバはちょっと特殊なロードバランサーを利用しているようです。
HTTPS化する上で、 X-Forwarded-Port
が 80
なら 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の書き換えとかあって大変ですけどネーーーー)