Apache2中几个虚拟域的公共子域

我正在运行带有Apache2和多个虚拟域的Web服务器。 此外,还有一个这些域的邮件服务器,暴露一个Web界面。 对于每个虚拟域example.com ,我都有指向我的webmail界面(Roundcube)的子域mail.example.com 。 它适用于以下configuration:

 <VirtualHost *:80> ServerAdmin [email protected] ServerName mail.example.com ServerAlias mail.vname1.com, mail.vname2.com, mail.vname3.com, #... DocumentRoot /srv/www/mail/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /srv/www/mail> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/mail.error.log LogLevel warn CustomLog /var/log/apache2/mail.access.log combined </VirtualHost> 

但是,对于每个新客户,我都会将相应的域名添加到ServerAlias es列表中。

有没有一种方法可以自动将所有mail.*子域与/srv/www/mail/ ?关联起来

ServerAlias指令支持通配符 – 您应该能够使用以下来匹配所有的“邮件”子域名。

 ServerAlias mail.* 

通配符子域(即* .domain.tld)有很好的文档logging,但是很难发现域部分也可以是通配符。

当我使用Apache时,我经常使用这种方法来处理常见的子域。 唯一的区别是我使用了redirect到一个普通的URL(因为我想使用SSL,并不想为每个域获取证书)。 无论如何,它能够成功捕获子域名,所以相同的实现应该在你的scheme中工作。 (当然,你仍然需要一个静态的ServerName指令)。