apache バーチャルホスト設定ではまった事
「名前ベース」のバーチャルホスト(複数のドメインを一つのapacheに割り当てるやつ)設定でメチャメチャはまった。
こんな感じのディレクトリツリーを
www
+ page1
+ page2
こんな感じにしようとしていた。
今までのドメインでアクセスしていたファイルをold ディレクトリ以下に移し、新ドメインは new 以下に割り当てる。
www
+ old
+ page1
+ page2
+ new
+ page3
今までのドメインでアクセスしたときは、www/old が DocumentRoot になり、新ドメインでアクセスしたときは、www/new が DocumentRootになる仕組みだ。
http://new.domain.jp/page3 にアクセスすると、そんなページは無いと404エラーが返ってくる。
ServerName new.domain.jp
DocumentRoot /www/new
ErrorLog path/to/log
...
エラーログを見ると、確かに 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 に変更して無事解決。
さて、なぜこんな設定をしているかというと……それはまた後日。