hi @vishnura5,
Yes, you can absolutely keep common farm file code in a separate file and reference it in siteA_farm.any and siteB_farm.any.
For Dispatcher farm files (.any files in conf.dispatcher.d), you should use the $include directive, which is the Dispatcher-specific syntax for including files.
Here's a recommended file structure for sharing common farm configurations:
/etc/httpd/
├── conf.dispatcher.d/
│ ├── dispatcher.any
│ ├── available_farms/
│ │ ├── siteA_farm.any
│ │ ├── siteB_farm.any
│ │ └── common/
│ │ ├── common_filters.any
│ │ ├── common_clientheaders.any
│ │ ├── common_cache_rules.any
│ │ └── common_renders.anyExample siteA_farm.any:
/siteAfarm {
/clientheaders {
$include "/etc/httpd/conf.dispatcher.d/available_farms/common/common_clientheaders.any"
$include "/etc/httpd/conf.dispatcher.d/clientheaders/siteA_clientheaders.any"
}
/virtualhosts {
$include "/etc/httpd/conf.dispatcher.d/vhosts/siteA_vhosts.any"
}
/renders {
$include "/etc/httpd/conf.dispatcher.d/available_farms/common/common_renders.any"
}
/filter {
$include "/etc/httpd/conf.dispatcher.d/available_farms/common/common_filters.any"
$include "/etc/httpd/conf.dispatcher.d/filters/siteA_filters.any"
}
/cache {
/rules {
$include "/etc/httpd/conf.dispatcher.d/available_farms/common/common_cache_rules.any"
}
}
}
For Apache configuration files (.conf, .vhost files in conf.d), use the standard Apache Include or IncludeOptional directive:
/etc/httpd/
├── conf.d/
│ ├── available_vhosts/
│ │ ├── siteA.vhost
│ │ └── siteB.vhost
│ ├── enabled_vhosts/
│ │ ├── siteA.vhost -> ../available_vhosts/siteA.vhost
│ │ └── siteB.vhost -> ../available_vhosts/siteB.vhost
│ ├── rewrites/
│ │ ├── common_rewrites.rules
│ │ ├── siteA_rewrite.rules
│ │ └── siteB_rewrite.rules
│ └── variables/
│ ├── common.vars
│ ├── siteA.vars
│ └── siteB.varsExample siteA.vhost:
Include /etc/httpd/conf.d/variables/common.vars
Include /etc/httpd/conf.d/variables/siteA.vars
<VirtualHost *:80>
ServerName "${SITEA_DOMAIN}"
<Directory />
Include /etc/httpd/conf.d/rewrites/common_rewrites.rules
<IfModule disp_apache2.c>
SetHandler dispatcher-handler
</IfModule>
</Directory>
<IfModule mod_rewrite.c>
ReWriteEngine on
LogLevel warn rewrite:trace1
Include /etc/httpd/conf.d/rewrites/siteA_rewrite.rules
</IfModule>
</VirtualHost>
To summarize, the conf.d folder does have an includes concept using Apache's native Include directive, while conf.dispatcher.d uses the Dispatcher-specific $include directive. Both approaches allow you to centralize common configurations and maintain DRY (Don't Repeat Yourself) principles across multiple sites.