Skip to the content
Documentation

Virtual host setup

No ratings yet

This section describes how to set up a virtual host for Exponential using the Apache webserver. A virtual host setup is only needed if Exponential has been configured to use the host access method, which is the most secure method.

By making use of virtual hosts, it is possible to have several sites running on the same server. The sites are usually differentiated by the name they are accessed. Apache will look for a specified set of domains and use different configuration settings based on the domain that is accessed.

Generic virtual host setup

Virtual hosts are usually defined at the end of "httpd.conf", which is the main configuration file for Apache. Adding a virtual host for Exponential can be done by copying the following lines and replacing the text encapsulated by the square brackets with actual values. Please refer to the next section for a real life example of using virtual hosts.

NameVirtualHost [IP_ADDRESS]

<VirtualHost [IP_ADDRESS]:[PORT]>
    <Directory [PATH_TO_EZPUBLISH]>
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <IfModule mod_php4.c>
        php_admin_flag safe_mode Off
        php_admin_value register_globals 0
        php_value magic_quotes_gpc 0
        php_value magic_quotes_runtime 0
        php_value allow_call_time_pass_reference 0
    </IfModule>

    DirectoryIndex index.php

    <IfModule mod_rewrite.c>
        RewriteEngine On
        Rewriterule ^/var/storage/.* - [L]
        Rewriterule ^/var/[^/]+/storage/.* - [L]
        RewriteRule ^/var/cache/texttoimage/.* - [L]
        RewriteRule ^/var/[^/]+/cache/texttoimage/.* - [L]
        Rewriterule ^/design/[^/]+/(stylesheets|images|javascript)/.* - [L]
        Rewriterule ^/share/icons/.* - [L]
        Rewriterule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]
        Rewriterule ^/packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]
        RewriteRule ^/packages/styles/.+/thumbnail/.* - [L]
        RewriteRule ^/favicon\.ico - [L]
        RewriteRule ^/robots\.txt - [L]
        # Uncomment the following lines when using popup style debug.
        # RewriteRule ^/var/cache/debug\.html.* - [L]
        # RewriteRule ^/var/[^/]+/cache/debug\.html.* - [L]
        RewriteRule .* /index.php
    </IfModule>

    DocumentRoot [PATH_TO_EZPUBLISH]
    ServerName [SERVER_NAME]
    ServerAlias [SERVER_ALIAS]

</VirtualHost>
[IP_ADDRESS] The IP address of the virtual host, for example "128.39.140.28". Apache allows the usage of a wildcards here ("*").
[PORT] The port on which the webserver listens for incoming requests. This is an optional setting, the default port is 80. The combination of an IP address and a port is often referred to as a socket. Apache allows the usage of a wildcards here ("*").
[PATH_TO_EZPUBLISH] Path to the directory that contains Exponential. This must be the full path, for example "/var/www/exponential-3.6.0".
[SERVER_NAME] The host or the IP address that Apache should look for. If a match is found, the virtual host settings will be used.
[SERVER_ALIAS] Additional hosts/IP addresses that Apache should look for. If a match is found, the virtual host settings will be used.

Please note that the "mod_rewrite" module must be enabled in "httpd.conf" in order to use the Rewrite Rules.

NameVirtualHost

The "NameVirtualHost" setting might already exist in the default configuration. Defining a new one will result in a conflict. If Apache reports errors such as "NameVirtualHost [IP_ADDRESS] has no VirtualHosts" or "Mixing * ports and non-* ports with a NameVirtualHost address is not supported", try skipping the NameVirtualHost line. For more info about the NameVirtualHost directive, see http://httpd.apache.org/docs/1.3/mod/core.html#namevirtualhost.

SOAP and WebDAV

If you would like to use the SOAP and/or the WebDAV features of Exponential, you'll have to add the following lines in the virtual host configuration:

RewriteCond %{HTTP_HOST} ^webdav\..*
RewriteRule ^(.*) /webdav.php [L]

RewriteCond %{HTTP_HOST} ^soap\..*
RewriteRule ^(.*) /soap.php [L]

ServerAlias soap.example.com
ServerAlias webdav.example.com

In this section

Contributors

Comments (3 historical)

Written by readers of the earlier documentation sites, kept as they were.

  1. Mistake in last rewrite rule

    Mahmoud Abu-Wardeh ·

    When I tried the rewrite rules above, Apache (2.0.54) complained with "mod_rewrite: maximum number of internal redirects reached", resulting in a 500 error.
    The solution is that the last rewrite rule should read:
    RewriteRule .* index.php # no leading slash
    See http://www.sitepoint.com/print/mod_rewrite-no-endless-loops for an explanation.
    By the way, this VirtualHost setup is quite differet to those in the .htaccess_root file that shops with ez Publish 3.7.2 - would you recommend a selective merge of the two or to stick to this example?

    1. Re: Mistake in last rewrite rule

      Karl Hegbloom ·

      My site logo image did not appear, so I have also added, before the final rule:

           Rewriterule \.(gif|jpe?g|png|css|js|html)$ - [L]     # RewriteCond %{HTTP_HOST} ^webdav\..*     # RewriteRule ^(.*) /webdav.php [L]     # RewriteCond %{HTTP_HOST} ^soap\..*     # RewriteRule ^(.*) /soap.php [L]
    2. Re: Mistake in last rewrite rule

      Björn Dieding ·

      RewirteOptions are not the way to go they are deprecated
      for .htaccess usage you can't your this rules from this vhost
      They should look more like this

      DirectoryIndex index.phpRewriteEngine OnRewriteCond %{HTTP_HOST} ^webdav\..*RewriteRule ^(.*) webdav.php [L]RewriteCond %{HTTP_HOST} ^soap\..*RewriteRule ^(.*) soap.php [L]RewriteRule ^var/cache/debug.html.* - [L]RewriteRule ^var/[^/]+/cache/debug.html.* - [L]Rewriterule ^var/storage/.* - [L]Rewriterule ^var/[^/]+/storage/.* - [L]RewriteRule ^var/cache/texttoimage/.* - [L]RewriteRule ^var/[^/]+/cache/texttoimage/.* - [L]Rewriterule ^design/[^/]+/(stylesheets|images|javascript)/.* - [L]Rewriterule ^share/icons/.* - [L]Rewriterule ^extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* - [L]Rewriterule ^packages/styles/.+/(stylesheets|images|javascript)/[^/]+/.* - [L]RewriteRule .* index.php [L]

Comments

Add a comment

Comments are read by a moderator before they appear.