Apache上的域和子域通配符作为动态子文件夹

时间:2014-11-03 13:57:39

标签: apache subdomain wildcard

我正在创建weeblywix格式的网站构建器。我想动态子文件夹。例如:

domain.com        /public_html/sites/domain.com/

sub1.root.com     /public_html/sites/sub1/

test.com          /public_html/sites/test.com/

sub2.root.com     /public_html/sites/sub2/

我只能跟随static,强迫我逐个添加整个网站。

<VirtualHost *:80>
    DocumentRoot "/public_html/sites/domain.com"
    ServerName domain.com
    ServerAlias *.domain.com
</VirtualHost>

如何动态为我提供给用户的客户所有者和子域提供动态域名。

1 个答案:

答案 0 :(得分:8)

根据您在中创建的文件夹的名称进行动态域名配置  /public_html/sites/,您可以使用ServerAliasVirtualDocumentRoot指令。

在apache virtualhost配置文件中添加以下内容:

<VirtualHost *:80>
    ...
    ServerAlias *
    VirtualDocumentRoot /public_html/sites/%0
    ...
</VirtualHost>

要了解使用%0 的原因,请考虑将域m.rate.movies.net拆分为部分

Index:             %1      %2      %3       %4
Domain:             m     rate    movies    net
Negative Index:    %-4     %-3     %-2      %-1

我选择使用的那个,%0代表整个域名 - m.rate.movies.net。这允许您支持可以具有由点分隔的不同数量的部分的域名。这使得在/public_html/sites/内创建的子目录成为指向服务器IP的任何域名的文档根目录。

  /public_html/sites/domain.com        --> http://domain.com/
  /public_html/sites/blog.writers.org  --> http://blog.writers.org/
  /public_html/sites/m.rate.movies.net --> http://m.rate.movies.net/

如果您使用VirtualDocumentRoot /public_html/sites/%1

之类的内容

您必须以这种方式创建子目录

  /public_html/sites/domain   --> http://domain.com/
  /public_html/sites/blog     --> http://blog.writers.org/
  /public_html/sites/m        --> http://m.rate.movies.net/

您还可以使用组合:VirtualDocumentRoot /public_html/sites/%-2\.%-1

  /public_html/sites/domain.com   --> http://domain.com/
  /public_html/sites/writers.org  --> http://blog.writers.org/
  /public_html/sites/movies.net   --> http://m.rate.movies.net/

另一种方式:VirtualDocumentRoot /public_html/sites/%-1/%-2/

  /public_html/sites/com/domain   --> http://domain.com/
  /public_html/sites/org/writers  --> http://blog.writers.org/
  /public_html/sites/net/movies   --> http://m.rate.movies.net/

通过这些设置,您无需在每次添加新域时编辑虚拟主机配置。您将无法为每个域使用单独的日志文件,但为此,您可以使用包含主机名的custom log格式。