【问题标题】:wildcard subdomain in .htaccess.htaccess 中的通配符子域
【发布时间】:2012-01-23 22:53:29
【问题描述】:

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

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

【问题讨论】:

    标签: php .htaccess subdomain wildcard


    【解决方案1】:

    您可以将 domain2 规则块换成:

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 1970-01-01
      • 2014-09-06
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2014-04-01
      相关资源
      最近更新 更多