我正在寻找一种方法来组织构成启用apache站点的configuration的文件。
假设我在我的networking服务器上有站点A,B和C. 这些站点具有不同的DocumentRoot和不同的RewriteRule以及不同的身份validation要求。 由别名和目录上下文定义。 我在一个基于Debian的服务器上。
我想要一个http和https版本的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