2011-12-19 8 views
0

任意の(ワイルドカード)サブドメインで使用できる単純なページを作りたいと思います。.htaccessのワイルドカードサブドメイン

たとえば、hello.domain2.comにアクセスすると、ページにはサブドメイン「hello」の名前がエコーされます。また、URLは "hello.domain2.com"のままでなければなりません。これは難しいことではありませんが、私のホストは1つのルートに複数のドメインを持っているので、私の.htaccessファイルを調整する必要があります。

私はhtaccessファイルをチェックアウトすると、ホストは自動に次のルールを作っています

RewriteEngine on  

RewriteCond %{HTTP_HOST} ^www.domain1.com$ 
RewriteCond %{REQUEST_URI} !^/domain1.com/ 
RewriteRule (.*)   /domain1.com/$1 [last] 
RewriteCond %{HTTP_HOST} ^domain1.com$ 
RewriteCond %{REQUEST_URI} !^/domain1.com/ 
RewriteRule (.*)   /domain1.com/$1 [last] 

RewriteCond %{HTTP_HOST} ^www.domain2.com$ 
RewriteCond %{REQUEST_URI} !^/domain2.com/ 
RewriteRule (.*)   /domain2.com/$1 [last] 
RewriteCond %{HTTP_HOST} ^domain2.com$ 
RewriteCond %{REQUEST_URI} !^/domain2.com/ 
RewriteRule (.*)   /domain2.com/$1 [last] 

RewriteCond %{HTTP_HOST} ^www.domain3.com$ 
RewriteCond %{REQUEST_URI} !^/domain3.com/ 
RewriteRule (.*)   /domain3.com/$1 [last] 
RewriteCond %{HTTP_HOST} ^domain3.com$ 
RewriteCond %{REQUEST_URI} !^/domain3.com/ 
RewriteRule (.*)   /domain3.com/$1 [last] 

これまでのところ、私は私のdomain2.comのための任意のサブドメインを受け入れるようにサーバーを構成しましたが、私のホストは、すべてのリダイレクトサブドメインは私のルートフォルダにあります。

代わりにワイルドカードサブドメインを/domain2.comに移動するにはどうすればよいですか。

答えて

0

あなたはのためのドメイン2のルールブロックを交換することができます:

RewriteCond %{HTTP_HOST} ^([\w-]+).domain2.com$ 
RewriteCond %{REQUEST_URI} !^/domain2.com/ 
RewriteRule ^(.*)$   /domain2.com/$1?subdomain=%1 [LAST,QSA] 

([\w-]+)は、サーバー名のワイルドカードで、%1は後でRewriteRulesにプレースホルダとして使用することができます。 (2番目のRewriteCondはアサーションに変換することもできます..)

関連する問題