apache バーチャルホスト設定ではまった事

「名前ベース」のバーチャルホスト(複数のドメインを一つのapacheに割り当てるやつ)設定でメチャメチャはまった。

こんな感じのディレクトリツリーを


www
+ page1
+ page2

こんな感じにしようとしていた。


www
+ old
+ page1
+ page2
+ new
+ page3
今までのドメインでアクセスしていたファイルをold ディレクトリ以下に移し、新ドメインは new 以下に割り当てる。
今までのドメインでアクセスしたときは、www/old が DocumentRoot になり、新ドメインでアクセスしたときは、www/new が DocumentRootになる仕組みだ。



ServerName new.domain.jp
DocumentRoot /www/new
ErrorLog path/to/log
...

http://new.domain.jp/page3 にアクセスすると、そんなページは無いと404エラーが返ってくる。
エラーログを見ると、確かに www/page3 にアクセスしている。
エラーログが VirtualHost で指定したログに出力されているので、VirtualHost で設定したDocumentRootも正しく反映されているはず。

結論。
以前実験で設定していた


Alias /page3 /www/new/page3
が邪魔をしていただけだった。。
教訓。
実験をした後はすぐに戻そう。



もう一つ。
以前から使用していたドメインの VirtualHost に DocumentRootを追記して http://old.domain.jp/page1 にアクセス。



ServerName old.domain.jp
DocumentRoot /www/old
Redirect /page1 https://old.domain.jp/page1
...

やはり、404エラーになる。

感の良い人は気づいてると思う。
そう、ssl.conf(因みに、オレオレ認証) の DocumentRoot を設定し忘れていただけ。
DocumentRoot を /www から /www/old に変更して無事解決。



さて、なぜこんな設定をしているかというと……それはまた後日。