【apache】VirtualDocumentRootで、ディレクトリを作るだけでサブドメインが作れる
問題
たくさんのサイトをVirtualHostで1台のサーバーで稼動させている。
Webサイト、サブドメインが増えるたびにDocumentRootを指定するのはとても面倒。httpd.confもどんどん見づらくなる。
いい方法ない?
答え
ルールに従ったディレクトリ構成にするなら、VirtualDocumentRootが便利。
DocumentRootを使うとこうなるところが、
<VirtualHost *:80> ServerName xxxxx.xxxx.xxx DocumentRoot "/home/apache/xxxxx.xxxx.xxx/htdocs" </VirtualHost> <VirtualHost *:80> ServerName yyyyy.xxxx.xxx DocumentRoot "/home/apache/yyyyy.xxxx.xxx/htdocs" </VirtualHost> <VirtualHost *:80> ServerName zzzzz.xxxx.xxx DocumentRoot "/home/apache/zzzzz.xxxx.xxx/htdocs" </VirtualHost>
VirtualDocumentRootでまとめてこう書ける。
<VirtualHost *:80> ServerName xxxx.xxx ServerAlias *.xxxx.xxx VirtualDocumentRoot "/home/apache/%0/htdocs" </VirtualHost>
zzzzz.yyyy.xxx にアクセスがあると、次のように展開される。
%0 → zzzzz.yyyy.xxx(全体) %1 → zzzzz(最初の部分) %2 → yyyy(2番目の部分) %3 → xxx(3番目の部分) %-1 → xxx(一番最後の部分) %-2 → yyyy(最後から2番目の部分) %2+ → yyyy.xxx(2番目以降の部分) %-2+ → yyyy.xxx(最後から2番目以降の部分)
こんな感じで整理するのもいいかもです。
VirtualDocumentRoot "/home/apache/%2+/%1/htdocs"
注意
今まで使えていたRewriteが動かなくなるなどの影響が出ることがある。
RewriteBaseを指定していればたいてい問題ない。
コメント