Using a custom VirtualHost template

Enter Your Query:
Use '%' for wildcards and quotes for "exact phrases"

Top Level » Apache Related Information

Using a custom VirtualHost templateLast Modified: Oct 13, 2010, 10:29 am
If you wish to change the setup of the VirtualHosts for all domains, you can do so by creating your own custom templates.

cd /usr/local/directadmin/data/templates
cp virtual_host2*.conf custom
cd custom

Once you've copied the 4 VirtualHost files (or just the ones you want) to the custom directory, you can then edit the new files you've just copied.  DirectAdmin will always check for the custom file before going to the default ones.  Failure to copy the virtual_host2*.conf files to the custom directory before modifying them will result in a loss of all changes when DirectAdmin updates itself (the files are overwritten).  Note that there are actually 8 virtual_host files, but you only need to worry about the 4 that apply to you.   The files with the 2 in them are for apache 2.x.  The ones without the 2 in them are for apache 1.3.

Inside the virtual_host*.conf files, you'll find code that is similar to httpd.conf code, but contains what are known as tokens.  These tokens are what will be replaces with specific user data for each domain created.

Available tokens
DOMAINthe name of the domain. eg:
IPthe IP address associated with that domain. eg:
HOMEThe users home directory. eg: /home/gary
ADMINThe email address of the server admin.
HOSTNAMEThe hostname of the server. eg:
SAFE_MODEON or OFF if php safe_mode is enabled or not
PHPON or OFF if php is enabled or not
CGIThe whole httpd.conf line used to add the Script-Alias
HANDLERShttpd.conf code holding all apache handlers
MIMETYPEhttpd.conf code holding all apache mime types
USERthe username
GROUPthe users group name (99% of the time, it's the same as the USER)
DOCROOTThe DocumentRoot of the VirtualHost.  This is the path that apache will use to access the data when the ServerName ( is requested
SUBfor the virtual_host_*sub.conf file, the subdomain name. eg: sub
CUSTOMcustom httpd.conf code to be inserted if the file exists. (See Adding custom httpd.conf code the VirtualHost of one domain)
CAROOTThe whole httpd.conf line used to load in the SSLCACertificateFile directive
CERTThe path of the certificate to be used for the domain
CREATORThe username of the account that created the User account who owns this domain
KEYThe path of the certificate to be used for the domain

The top of the templates should contain |?CGI=...| and |?DOCROOT=...|.  These lines are where the data for the CGI and DOCROOT tokens are set.  If cgi is not enabled, this line wil be ignored and the CGI token will be empty.  If the domain is suspended, the DOCROOT will be filled the the path of the suspend page.  The CAROOT token will be empty unless the User has added a valid CARootCertificate through DA.

You can use tokens when assigning a value to CGI or DOCROOT, just use `TOKEN` instead of |TOKEN|.

Once you are happy with your new virtual_host*.conf files they'll need to be used in the real httpd.conf files.  You can trigger DirectAdmin to rewrite all User httpd.conf files by running:

echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue

The command will be added the the task queue which is checked once per minute, so it may be a few minutes before all httpd.conf files have been rewritten.  *Note: the main /etc/httpd/conf/httpd.conf is never overwritten (unless DirectAdmin is reinstalled) so any changes you make will be safe.

Note, that you can also use if-then-else statements if you don't want all settings to be global.  Example, say you want a custom item added, only for 1 domain:

|*if DOMAIN=""|
#custom item for just this domain

See the if-then-else link for more info on what else you can do with this basic scripting tool.

You can also run actual scripts with database queries, etc... if you wanted using the script portion of the templates.
More info on that here:
Related Helpfiles
Adding custom httpd.conf code to the VirtualHosts of a domain
Setting up as default for new domains.
How can I edit all of the templates, messages, and default index.html pages?
Using custom global templates with Nginx

© 2018 JBMC Software, Suite 173  3-11 Bellerose Drive, St Albert, AB  T8N 1P7  Canada.  Mon-Fri 9AM-5PM MST