先日サブドメインの変更、及びそれに伴うURL正規化処理の設定をした際に、結局なんだかんだと多少のトラブルがあったので、ここに備忘録代わりに設定内容を書いておくことにした。
2019年6月現在の設定内容。
以下は、本サイトのドメイン、miaoued.netでの、SSL化及びwwwのサブドメインを無くしてのURL正規化を行う設定内容なので、参考にする人は留意してほしい。
まず、さくらインターネットのサーバーコントロールパネルでの設定。
ドメインはmiaoued.net及びwww.miaoued.netの2つを登録。
両方ともドメイン設定は、「wwwを付与せずマルチドメインとして使用する(上級者向け)」に変更しておく。
SSLの設定を、やはりwww有り無し両方のドメインに対して行う。僕はさくらインターネットのLet’s encryptを利用した無料SSLにて設定。www有り無しで別々の証明書を取得。
ちなみに無料SSLを利用する場合、先程述べた「wwwを付与せず~」が設定されていないと、SSLの証明書を取得する際にドメインの認証に失敗するので注意。
ちなみに、後述のように最終的にhttps://miaoued.netにリダイレクトで統一されるなら、ここでwww.miaoued.netのSSL設定は必要なさそうに感じるのだが、設定しておかないと、https://www.miaoued.netにアクセスがあった段階でSSLの証明書エラーが発生して、その後リダイレクト処理となってしまう。エラー画面を出さないためには、きちんと両方設定しておくこと。
.htaccessの編集内容は、以下の通り。
HTTPS化については、当サイトはwordpressで運用しているため、SAKURA RS SSLを導入した。このプラグインにより、HTTPS化のリダイレクトに関しては.htaccessに自動で記入される。
自分で編集する場合も、以下の内容を参考に書いてもらって大丈夫だと思う。
# BEGIN Force SSL for SAKURA
# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA
これにより、
http://www.miaoued.net → https://www.miaoued.net
https://miaoued.net → https://miaoued.net
へのリダイレクトが行われる。
また、URLの正規化については以下のような設定となっている。
##www有る無しのリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.miaoued\.net)$ [NC]
RewriteRule (.*) https://miaoued.net%{REQUEST_URI} [R=301,L]
</IfModule>
これにより、
https://www.miaoued.net → https://miaoued.net
へのリダイレクトが設定される。
実際には後方参照を利用した、もっとうまい書き方(こことかを参照)があるみたいだが、とりあえず上手く動いているようなのでこれで妥協。
これらのリダイレクト設定を、.htaccessの先頭に追記(さくらのSSL化プラグインによるリダイレクトが先頭に挿入されたので、そこに合わせてある)。
今回は以上。