如何组织Apache网站的configuration文件

我正在寻找一种方法来组织构成启用apache站点的configuration的文件。

假设我在我的networking服务器上有站点A,B和C. 这些站点具有不同的DocumentRoot和不同的RewriteRule以及不同的身份validation要求。 由别名目录上下文定义。 我在一个基于Debian的服务器上。

我想要一个httphttps版本的A,B和C.

对于VirtualHost ServerName www1.myhome.com; 我想为A和B服务

对于VirtualHost ServerName www2.myhome.com; ,我想服务B和C.

我如何避免重复A,B和C的configuration?

我试图用不同的forms使用包含。 包括例如A的configuration到不同的虚拟主机,但我发现文件path的问题麻烦。 特别是它不允许我去a2ensite A 。 此外,它使解决configuration文件是一个麻烦。 这一切都是从Apache2.2迁移到Apache2.4的一部分。

有没有很好的解决这个问题?

configuration站点A. B和C在结构上相似。

 Alias /A /srv/rootA/ <Directory /srv/rootA/> // Unique stuff for A // In particular Auth and rewrite rules </Directory> 

这是众多解决scheme之一,我假设你在一个基于Debian的服务器上。

在你的apache serverroot目录下,创build一个目录instances 。 在这个目录中创build许多configuration文件,就像你有“站点”(A,B或C)一样。 在其中定义你需要的,并相应地命名每个文件。

sites-available目录中,为每个需要的虚拟主机创build一个文件。 在这些文件中,像往常一样定义你的虚拟主机,并根据需要包括“网站”configuration,即:

 # Vhost for www1.myhome.com <VirtualHost *:80> Include instances/siteA.conf Include instances/siteB.conf </VirtualHost> 

之后,您将可以更轻松地进行a2ensitedebugging。

参考Apache包括命令: http : //httpd.apache.org/docs/2.4/mod/core.html#include