htaccess并从HTTP_HOST中删除子域

时间:2011-12-20 19:53:35

标签: apache .htaccess mod-rewrite

我有一个通配符DNS记录,允许所有形式的* .domain.com,另外我指向同一台机器上的几个不同的域,并使用重写规则将请求定向到子文件夹,具体取决于请求的URL起源。

例如domain1.com指向/ sites / folder / domain1,domain2.com指向/ sites / folder / domain2

我的问题是,我在此规则中使用了Apache var HTTP_HOST,其中包含子域,因此sub1.domain1.com指向/sites/folder/sub1.domain1.com并具有数百个子域对于每个域,都无法创建所有这些文件夹的可能性。

我的问题:如何从HTTP_HOST变量中删除所有子域?这就是规则集到目前为止的样子:

RewriteRule ^file.xml$ sites/%{HTTP_HOST}/file.xml [L]

哪个有效,直到子域中包含子域...

2 个答案:

答案 0 :(得分:1)

要将规则限制为仅mydomain.com(即没有子域),请在重写之前添加RewriteCond指令,如下所示

RewriteCond %{HTTP_HOST} ^[^\.]+\.com$ [NC]
RewriteRule ^file.xml$ sites/%{HTTP_HOST}/file.xml [L]

编辑: 允许任何域,但不允许子域

答案 1 :(得分:0)

我认为他想要的是在重写中使用变量HTTP_HOST,但不能与子域一起使用:
HTTP_HOST = www.example.com
重写规则:
RewriteRule ^file.xml$ sites/%{HTTP_HOST}/file.xml [L]
实际上是:
RewriteRule ^file.xml$ sites/example.com/file.xml [L]
但不是:
RewriteRule ^file.xml$ sites/www.example.com/file.xml [L]
-布莱恩