以前、シンフリーサーバーでドメイン設定が追加されている旨の記事を書いた。
一旦、この設定を有効にして動作検証していたところ、サブドメインを使用しているサイトで以下の問題が発生した。
① http://blog.fractcode.com にアクセスすると、https://www.blog.fractcode.com/blog.fractcode.com へリダイレクトされる
② https://www.blog.fractcode.com にアクセスすると、HTTPSにリダイレクトされない
①原因調査
まずはHTTP接続でwwwが付与されていない場合にリダイレクト先のURLが不正なものになる件の調査。リダイレクト処理なのでまずは.htaccessファイルを確認する。
public_html ディレクトリ直下にある.htaccessに以下の記述があった。これはシンフリーサーバーの設定を有効にすることで自動的に書き込まれる模様。
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
どうも、最後の行にある$1が問題になっている様子。
①修正
public_html ディレクトリ直下にある.htaccessに記述されているルールの最後の行、/$1を%{REQUEST_URI}に書き換える。
書き換え後の.htaccessファイルは以下のようになる。元のコードはコメントアウトとしておいた。
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
②原因調査
シンフリーサーバーのサブドメインのルートディレクトリ(自分の環境では、「public_html/www.blog.fractcode.com」)内にある.htaccessを確認。こちらには何も記述されていなかったため、SSL無しのアクセスがそのまま通るようになっていた。
②修正
サブドメインのルートディレクトリにある.htaccessに以下の内容を追記。www無しのリダイレクトに関してはルートディレクトリのものが適用されるため不要。
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
影響
「①修正」のセクションでwww無しのアクセスの場合にwww付きのURLへリダイレクトする、という設定を手動で書き換えたため、シンフリーサーバーの設定画面では「転送しない」設定になっているように表示される。(動作としてはきちんとリダイレクトされるので問題無し)

コメント