複数ドメインで.htaccessを利用して表記ゆれをリダイレクトできなかった話

VPS

さくらのVPSでこのブログは動いているのだが、アクセスもまだ少ないし他の趣味サイトも同じVPSに乗せている。

ファイル構造的には、
* /var/www/html直下に自己紹介だけのサイト( wanoh.net
* /var/www/html/blogにWordPress(このブログ)
* /var/www/html/exampleにもう一つサイトをおいている

…としよう。趣味のサイトは明かしたくないのでexampleでご勘弁を。

exampleのところはwanoh.netではないドメインを別でとっている。
まずhttpd.conf内でVirtualHostを使って2つのドメインからVPSに引きこむことに成功したのだが、その後が問題であった。
「wwwがついてるURLは好きじゃないし、放置してるとSEO的にもよろしくないのでリダイレクトしてしまおう」と思ったのが始まりだった。

それぞれのドメインのルートディレクトリに.htaccessをおいて、www付きのURLをwwwなしに、さらにexample.com/index.htmlを単にexample.comにリダイレクトでよい。.htaccessの内容はぐぐった。

問題発生と解決

今はwww.wanoh.netにアクセスすると即座にhttp://wanoh.netに飛ぶはずだ。wanoh.netだけはサクサク設定が終わった。
しかしもうひとつのサイトもwwwを消してしまおうとしたら、なんと!www.example.comがhttp://wanoh.net に飛んでしまったではないか。

.htaccessの中身はコピペでなんとかしていたのでちんぷんかんぷんだが、とにかく、サブディレクトリに.htaccessを入れると.htaccess同士で干渉してしまってうまくいかない(多分)。
なぜかexample.comのindex.htmlのほうのリダイレクトは通っていたのでその設定は維持。wwwを消すための設定はhttpd.conf内で行った。

<VirtualHost *:80>
ServerName www.example.com
Redirect 301 / http://example.com/
</VirtualHost>

これをhttpd.confの好きなとこにぶちこんで終了!もちろん適宜URLは変えてください。
あとは.htaccessのパーミッションを644だか604にしとくのを忘れないように!最悪死ぬ!

動くんだからいいじゃんか!

このままだと設定が複数ファイルに分散することになって若干気持ち悪いので、どうにかして.htaccessで全部解決したいと思う。
ところでなんで今回の現象が起きたんだろう?VirtualHostまわりよく分かってないけど、wanoh.netが優先されたわけだからどこかに設定ファイルあるんだろう。考えてもわからないのでだんだん動いたんだからいいじゃんと思い始めた。