うまいぼうぶろぐ

linuxとhttpdとperlのメモ

ホスト名、FQDNでドキュメントルートを振り分けてサブドメインを動的に作る方法ってどうやるの?

ユーザのアカウントに対して

http://example.com/username/
http://example.com/~username/

ではなくて、

http://username.example.com/

こういうURIでアクセスしたい。でもいちいちVirtualhost作って、apache再起動なんかするの嫌だっていう。

実現方法

実際のところ世間の皆さんはどうやってるんですかね。とりあえず凡人の僕が思いつくのは、mod_rewrite使って何とかすりゃできんじゃね、ってことなのでやってみました。それっぽいことは実現できました。細かい動作は未確認。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*?)\.example\.com$
RewriteRule ^/(.*)$      /home/%1/public_html/$1 [L]

でも何だかしっくりこない。何やら怪しげ。何かダサい。何か不安。

http://username.example.com/../../../

みたいなURIディレクトリトラバーサルされたら嫌だなー思ってたんですが、どうやらそれは大丈夫だったみたいです。

追記

apacheのモジュールを使ったほうがシンプルらしい。書いた。