最終更新日 2008年11月14日
up
top
サブドメインのヴァーチャルホストの設定をmod_rewriteでやってみる
普通サブドメインでヴァーチャルホストを設定するときは、
NameVirtualHost *:80
DocumentRoot /var/www/sample.com/htdocs/abc
ServerName abc.sample.com
DocumentRoot /var/www/sample.com/htdocs/xyz
ServerName xyz.sample.com
DocumentRoot /var/www/sample.com/htdocs/123
ServerName 123.sample.com
とかやったりするが、サブドメインが100個もあると設定が面倒なので、mod_rewriteで自動的にやらせてみる。
NameVirtualHost *:80
DocumentRoot /var/www/abc.sample.com/htdocs/abc
ServerName *.sample.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.sample\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.sample\.com(.*) /$1$2
正規表現でサブドメインの部分を抜き出し、ディレクトリ名に置き換えている。
つまりabc.example.comのホスト名でアクセスしてきた場合、abc.example.com/abcと書き換えている。
こうするとディレクトリを作ってその中にHTMLを突っ込むだけでよい。httpdの設定要らない。
この場合、DNSの設定でも、ワイルドカード指定し、サブドメイン名に何が来てもこのサーバのIPアドレスを返すように設定しておく。
@ IN A 10.0.0.1
* IN A 10.0.0.1
Bloggerとか、会員ページのURLは会員IDのサブドメインをもっていて、
(会員登録があるたびにhttpd.confを書き換えてhttpdをreloadしてるのだろうか:(;゙゚'ω゚'):)と2秒考えたがそんなわけないぢゃん。
と思った何年か前。