2007年11月 1日

mod_rewrite サブドメイン


<VirtualHost *:80>
    DocumentRoot /home/hoge/public_html
    ServerName hoge.net
    ServerAlias *.hoge.net
    RewriteEngine On
#    RewriteBase /
    RewriteCond %{HTTP_HOST} ([^\.]+).*
#    RewriteRule ^/$ /in.php?no=%1 [L]
    RewriteRule ^/$ /%1.html [L]
</VirtualHost>

------------------------------------

 

Virtual User Hosts

Problem Description:

同じマシンに対する DNS A レコード を使って、このマシンに virtualhosts なしでユーザ名のホームページに対して www.username.host.domain.com を提供したいとします。

Problem Solution:

HTTP/1.0 リクエストに対しては解決法がありませんが、HTTP/1.1 に対するリクエストは Host を含んでいます: HTTP ヘッダは http://www.username.host.com/anypath を内部的に /home/username/anypath に rewrite するルールセットを使います:

RewriteEngine on
RewriteCond   %{HTTP_HOST}                 ^www\.[^.]+\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.([^.]+)\.host\.com(.*) /home/$1$2