zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

【さくらのレンタルサーバ】RewriteCond %{HTTP_HOST} でwww.hogehogeとhogehogeを分岐

【概要】

さくらのレンタルサーバの[サイトに関する設定]-[ドメイン設定]で

マルチドメインとして使用する(推奨)

を選択している場合
http://hogehoge.jp/
http://www.hogehoge.jp/
は同一のHTTP_HOSTとして扱われる模様
http://www.hogehoge.jp/ でアクセスしても、%{HTTP_HOST}はhogehoge.jp(wwwがない)。
.htaccessでwww.hogehoge.jpにアクセスに来たらhogehoge.jpに301リダイレクトしたいとき、

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www\.hogehoge\.jp)$ [NC] 
RewriteRule (.*) http://hogehoge.jp%{REQUEST_URI} [R=301,L] 

では動いてくれない。

【回避策】

1)ServerName www.hogehoge.jp に当たる設定を追加する

[ドメイン設定]-[新しいドメインの追加]-[5. 他社で取得したドメインを移管せずに使う]
ドメイン名:www.hogehoge.jp で[送信する]。
※ネームサーバの設定は、ルートドメインの設定時に行われている前提。

2)hogehoge.jpのマルチドメイン設定を変更
wwwを付与せずマルチドメインとして使用する(上級者向け)

に変更

これで、www.hogehoge.jpから流入したときの{HTTP_HOST}に入る値がwww.hogehoge.jpとなるため、上記.htaccessが動作する。

前にも同じことでハマった気がするのでメモしておく。

【参考】

www.harukas.org