RapidSSLでさくらインターネットのWordPressサイトをSSL化したメモ

https

photo credit: https via photopin (license)

前提

すでにRapid SSLの証明書をさくらインターネットのコントロールパネルからインストールしているものとします。適当にググってください。僕はwww付きのドメインで設定しました。例としてwww.yourdomain.comとしておきます。

WordPressをメンテナンスモードにしよう

作業途中を見られるのは恥ずかしいですからね。WordPressのメンテナンスモードを利用しましょう。なお、メンテナンスモードにしてくれるプラグインはもう定番ですね。適当にメンテされているものを利用しましょう。大体、同じ機能なので説明は割愛。

WordPress > Search for maintenance - WordPress Plugins

WordPressの設定変更

WordPressの管理画面の設定→一般設定の以下の設定をhttpsに変更します。

  • WordPress アドレス (URL)
  • サイトアドレス (URL)

WordPressのwp-config.phpを編集

httpsを有効にします。以下のyourdomain.comを変更して使ってください。

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

.htaccessを設定

僕の場合以下全てをhttps://www.yourdomain.com にリダイレクトさせる必要がありました。

  • http://yourdomain.com
  • http://www.yourdomain.com
  • https://yourdomain.com

その為にWordPress > WP Htaccess Editor - WordPress Pluginsみたいな.htaccess管理用プラグインを導入してもいいかもしれません。.htaccessの内容はこんな感じでしょうか。

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

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

sendmailが死ぬっぽいので…

テーマのfunctions.phpファイルに以下を追加。メールアカウントが無い場合はGmailとか適当にアカウント作っちゃえばいいでしょ。

add_action('phpmailer_init','send_smtp_email');
  function send_smtp_email( $phpmailer ){
    $phpmailer->isSMTP();
    // SMTPサーバ名
    $phpmailer->Host = "smtp.youdomain.com";
    // SMTP Authの利用 (true|false)
    $phpmailer->SMTPAuth = true;
    // SMTP Port No - 25, 465, 587とか…
    $phpmailer->Port = "587";
    // ログインユーザーID
    $phpmailer->Username = "info@yourdomain.com";
    // パスワード
    $phpmailer->Password = "password";
    // SMTP暗号化 - ssl (deprecated) or tls
    $phpmailer->SMTPSecure = "tls";

    $phpmailer->From = "info@yourdomain.com";
    $phpmailer->FromName = "yourdomain, Inc";
}

こんな感じでひと通り動きました。とにかくお安くSSL化できてありがたやありがたや〜

Written on August 18, 2015