• お役立ち

Rewrite機能でサブドメインを自動割り当て

  • このエントリーをはてなブックマークに追加
  • LINEで送る

たまには技術的なことも…。

今、自社であるWebサービスを開発していて、なんとか簡単にサブドメインを追加できないかと考えていろいろ調べた結果を記録しておきます。

主旨:Webのサービスで、ユーザが任意のIDを登録したらそのIDがサブドメインの専用ページを作るようなケースで、Apacheの定義ファイルを操作したりApacheを再起動することなく、自動でサブドメインを割り当てたい

環境:Linux(CentOS5)、Apache2系

問題点:通常サブドメインを作成する際は、VirtualHostなどを使用して、Apache定義ファイルに定義して、Apacheを再起動または定義際読み込みをする。これは手動で行うか、プログラム内で定義を更新し、cronで一定期間ごとに再起動行うが、面倒くさいのでRewriteさせる。

方法:Rewriteモジュールを使用して、指定のディレクトリに作られた、任意のフォルダをサブドメインとして認識させる。※VirtualHostを設定している場合は、httpd.confファイル等の<VirtualHost>タグ内に記入する。

<VirtualHost *:80>
ServerName   example.com:80
ServerAlias  *.example.com

RewriteEngine On
RewriteLog “/home/example/log/rewrite.log

RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.example\.com(.*) /sub/$1$2
</VirtualHost>

解説:

ほんとは、http://www.example.com/sub/bricoleur/ というURLのコンテンツを

http://bricoleur.example.com/というURLにみせかける。

****.example.com/xxxx でアクセスされたら

→ http://example.com/sub/****/xxxx  をページ表示する

星虹思械BRICOLEUR

関連コンテンツ