Apache2 VirtualHost 自动子域名

Apache2 VirtualHost 自动子域名

我刚刚买了一台全新的 Linux 服务器(Debian Stable)。该服务器主要用于网站托管和网站开发。

我安装了 Apache2、PHP5 和 MySQL,它们一切正常。

我组织网站的方式是使用以下路径:/var/www/username/website.com

现在我希望服务器自动“创建”/识别子域。

/var/www/用户名/sub.website.com >http://sub.website.com

我不想让上述情况自动发生。该怎么做?

答案1

最好的方法是将所有网站的链接放在特定目录中,然后执行以下操作:

<VirtualHost *:80>
        RewriteEngine On
        RewriteMap lowercase int:tolower
        # if already rewitten and we have the right path, stop right here
        RewriteRule ^(/where/your/sites/are/[^/]+/.*)$ $1 [L]
        RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
        RewriteRule ^(www\.)?([^/]+)/(.*)$ /where/your/sites/are/$2/$3 [L,E=VHOST_ROOT:/where/your/sites/are/$2/]
</VirtualHost>

答案2

您可以使用海量虚拟主机。就您而言,由于路径中的“/username/”,您将无法在主 apache 配置中使用它,但您可以为每个用户创建一个虚拟主机,然后在虚拟主机中使用批量虚拟主机。

例子:

<VirtualHost *:80>
ServerName domain.tld
ServerAlias *.domain.tld
VirtualDocumentRoot /var/www/user1/%0/
</VirtualHost>

<VirtualHost *:80>
ServerName domain2.tld
ServerAlias *.domain2.tld
VirtualDocumentRoot /var/www/user2/%0/
</VirtualHost>

...

使用 mod rewrite 你可以让 domain.tld 重写并指向 www 目录

相关内容