使用正则表达式动态设置子域的文档根目录

时间:2013-04-14 08:52:22

标签: apache .htaccess apache2

我已经设置了子域通配符来接受任何subdomian,主要问题是我使用DirectAdmin并且我无法使用DA API将子域指向特定路径 我想将任何subdomian指向名为subdomian的文件夹,该文件夹存在于子目录

例如sub.domian.com应指向/ public_html / subdomains / sub

类似这样的事情

<VirtualHost *:80>
  VirtualDocumentRoot /public_html/subdomains/%1
</VirtualHost>

如果我设置了一个像“.x”这样的单词的子域名来指向该路径,那么这将是我的理想

也许喜欢

<VirtualHost *.x:80>
  VirtualDocumentRoot /public_html/subdomains/%1
</VirtualHost>

抱歉,如果问题听起来很愚蠢

3 个答案:

答案 0 :(得分:0)

看起来这就是你需要的:

<VirtualHost *:8080>
    ServerName localhost
    ServerAlias *.localhost

    #the %1 is the asterisk value! No regexp supported!
    VirtualDocumentRoot /home/%1/project 
    VirtualScriptAlias  /home/%1/project

    <Directory /home/*/project/>
    #...
    </Directory>
</VirtualHost>

答案 1 :(得分:-3)

这可以完全使用htaccess完成。 您必须启用通配符子域名* .domain.com并将其指向domain.com

然后您可以使用以下类型的规则:

RewriteCond %{HTTP_HOST} !www.domain.com [NC]
RewriteCond %{HTTP_HOST} ^([a-z0-9-]+).domain.com [NC]
RewriteRule ^(.*/) /%1/index.php [PT,L]

您可以修改RewriteRule作为存储子域的文件。

答案 2 :(得分:-3)

找到了答案

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !www\.domain\.com$[NC]
RewriteCond %{HTTP_HOST} ^(.*?)\.domain\.com$
RewriteCond %{REQUEST_URI} !folder/(.*?)/
RewriteRule ^(.*) /folder/%1%{REQUEST_URI} [L]
</IfModule>