我有一个通配符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]
哪个有效,直到子域中包含子域...
答案 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]
-布莱恩