{{Apache web server configuration}}
+extern type web_node;
+{{Nodes that accept Apache configuration from you}}
+
+extern val web_node_to_node : web_node -> node;
+
context Vhost;
{{A WWW virtual host}}
+extern type suexec_flag;
+{{Whether or not to use Suexec with a vhost.
+For users with the 'www' privilege, this type is identical to [bool].
+For others, it has only one value, [true].}}
+
+extern type ssl_cert_path;
+{{Filesystem path to an SSL certificate in your 'cert' list}}
+
+extern type ssl;
+extern val no_ssl : ssl;
+extern val use_cert : ssl_cert_path -> ssl;
+
extern val vhost : host -> Vhost => [Domain]
- {WebNodes : [node],
- SSL : bool,
+ {WebNodes : [web_node],
+ SSL : ssl,
User : your_user,
Group : your_group,
DocumentRoot : your_path,
- ServerAdmin : email};
+ ServerAdmin : email,
+ SuExec : suexec_flag};
+{{Add a new named Apache virtual host, specifying which nodes' Apache servers
+ should answer requests for this host, whether it should use SSL, what UNIX
+ user and group dynamic content generators should be run as, the filesystem
+ path to the static content root, and the e-mail address to which error pages
+ should direct visitors.}}
+
+context Location;
+
+extern type location;
+{{A valid URI prefix}}
+
+extern val location : location -> Vhost & Location => [Vhost & !Location];
+extern val directory : your_path -> ^Vhost & Location => [Vhost & !Location];
+{{Set some configuration specific to a URI prefix or filesystem directory,
+ respectively.}}
+
+extern val serverAliasHost : your_domain_host -> [Vhost];
+{{Give an alternate hostname for this vhost.}}
+extern val serverAlias : host -> [Vhost];
+{{Like serverAliasHost, but adds an alias for the given hostname at every domain
+ being configured.}}
+extern val serverAliasDefault : [Vhost];
+{{Like serverAliasDefault, but adds aliases for the domains being configured
+ instead of any of their hosts/"subdomains".}}