前提と目標
- concrete5 5.7.5.9(検証用にElementalをインストール)
- さくらのレンタルサーバー スタンダードプラン
- ラピッドSSL(SNI SSL)
- .htaccessは「使わないドメイン」の方だけに設定
使いたいURLを https://example.com として説明しています。
下記全てのリダイレクトを行いURL正規化を目標とします。
http://example.com/ → https://example.com/
http://www.example.com/ → https://example.com/
https://www.example.com/ → https://example.com/
さくら コントロールパネル ドメイン設定
ドメイン登録
「example.com」と「www.example.com」を別々のドメインとして設定します。
両方とも「wwwを付与せずマルチドメインとして使用する(上級者向け)」の設定にします。フォルダもそれぞれ別の物を指定します。
SSL証明書の登録とSSL設定
- まずはexample.comにSSL証明書を登録します。 参照:【ラピッドSSL】サーバコントロールパネルからの申込み・導入手順
- example.comの「SSL証明書>更新」から「秘密鍵のバックアップ」をクリックして秘密鍵をダウンロードします。
- 会員メニュー>契約情報 から「サーバー証明書」をダウンロードします
もう片方のドメイン(例:www.example.com)に上記「秘密鍵のバックアップ」「サーバー証明書」を使ってSSL証明書を登録します。
www.example.comにSSL証明書を登録する際、「秘密鍵のアップロード」が画面に出てこない場合(既に登録されたCSRキーが表示される場合)は、「秘密鍵を含む全設定の削除」をクリックして一度設定をクリアしてください両方のドメイン設定を「SNI SSLを利用する」に変更します。
concrete5の設定
concrete5のインストール
example.comで指定したフォルダにconcrete5をインストールします。
concrete5:ホスティング会社別インストールガイド
リダイレクト設定
SSL Redirect Configurationをインストールします。
URLルール(パス)に「*」を設定します。
プリティーURL
「管理画面>システムと設定>URLとリダイレクト」でプリティーURLを設定します。
「URLからindex.phpを除く」にチェックを入れて「保存」をクリックすると自動的に.htaccessファイルがサーバー上に生成されます。
ヘッダー情報変更
application/bootstrap/app.phpへ下記を追記します。
$request = Request::getInstance();
if ($request->headers->has('X-Sakura-Forwarded-For')) {
$request->server->set('HTTPS', 'on');
}
カノニカルURL設定変更
下記内容で application/config/ に concrete.phpというファイルを作成します。
※通常canonical_url は http://~ ですが、今回は https://~ に設定します。
<?php
return array(
'seo' => array(
'canonical_url' => 'https://example.com/',
'canonical_ssl_url' => 'https://example.com/',
),
);
参照:サクラインターネットで concrete5 を常時 SSL にするための方法
301リダイレクト設置
www.example.com のフォルダに下記内容で.htaccessファイルを作成し、301リダイレクトを設定します。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>
以上となります。
お疲れさまでした!
https://www.example.com を有効とする事も可能です。
その場合は example.comとwww.example.comを読み替えて設定してください。
2016.11.22追記
秘密鍵のアップロードが出来ない場合について補足しました。