.htaccess中的通配符子域

时间:2011-12-19 21:09:32

标签: php .htaccess subdomain wildcard

我想创建一个可用于任何(通配符)子域的简单页面。

例如,您访问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?

1 个答案:

答案 0 :(得分:0)

您可以将domain2规则块替换为:

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

([\w-]+)是服务器名称的通配符,%1可以在以后的RewriteRules中用作占位符。 (第二个RewriteCond也可以变成一个断言..)