# [Apache 2.2.11]Dynamic virtual hosts not working

## raphy

Hello everyone,

I tried to setup a virtual hosting system using apache and dynamic virtualhosts as explained in: http://en.gentoo-wiki.com/wiki/Apache2/mod_vhost_alias

Unfortunately, the configuration doesn't work. Here is the error I get in the gentoo log:

```
[Sat Jun 20 14:41:09 2009] [error] [client 209.85.238.112] client denied by server configuration: /usr/htdocs
```

I tried searching through google and these forums, as well as on the apache website, but nothing worked for me.

here is my httpd.conf

```
# This is a modification of the default Apache 2.2 configuration file

# for Gentoo Linux.

#

# Support:

#   http://www.gentoo.org/main/en/lists.xml   [mailing lists]

#   http://forums.gentoo.org/                 [web forums]

#   irc://irc.freenode.net#gentoo-apache      [irc chat]

#

# Bug Reports:

#   http://bugs.gentoo.org                    [gentoo related bugs]

#   http://httpd.apache.org/bug_report.html   [apache httpd related bugs]

#

#

# This is the main Apache HTTP server configuration file.  It contains the

# configuration directives that give the server its instructions.

# See <URL:http://httpd.apache.org/docs/2.2> for detailed information.

# In particular, see

# <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>

# for a discussion of each configuration directive.

#

# Do NOT simply read the instructions in here without understanding

# what they do.  They're here only as hints or reminders.  If you are unsure

# consult the online docs. You have been warned.

#

# Configuration and logfile names: If the filenames you specify for many

# of the server's control files begin with "/" (or "drive:/" for Win32), the

# server will use that explicit path.  If the filenames do *not* begin

# with "/", the value of ServerRoot is prepended -- so "var/log/apache2/foo_log"

# with ServerRoot set to "/usr" will be interpreted by the

# server as "/usr/var/log/apache2/foo.log".

CustomLog /var/log/apache2/access.log combined

# ServerRoot: The top of the directory tree under which the server's

# configuration, error, and log files are kept.

#

# Do not add a slash at the end of the directory path.  If you point

# ServerRoot at a non-local disk, be sure to point the LockFile directive

# at a local disk.  If you wish to share the same ServerRoot for multiple

# httpd daemons, you will need to change at least LockFile and PidFile.

ServerRoot "/usr/lib/apache2"

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding `LoadModule' lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Statically compiled modules (those listed by `httpd -l') do not need

# to be loaded here.

#

# Example:

# LoadModule foo_module modules/mod_foo.so

#

# GENTOO: Automatically defined based on APACHE2_MODULES USE_EXPAND variable.

#         Do not change manually, it will be overwritten on upgrade.

#

# The following modules are considered as the default configuration.

# If you wish to disable one of them, you may have to alter other

# configuration directives.

#

# Change these at your own risk!

LoadModule actions_module modules/mod_actions.so

LoadModule alias_module modules/mod_alias.so

LoadModule auth_basic_module modules/mod_auth_basic.so

LoadModule authn_alias_module modules/mod_authn_alias.so

LoadModule authn_anon_module modules/mod_authn_anon.so

LoadModule authn_dbm_module modules/mod_authn_dbm.so

LoadModule authn_default_module modules/mod_authn_default.so

LoadModule authn_file_module modules/mod_authn_file.so

<IfDefine AUTHNZ_LDAP>

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so

</IfDefine>

LoadModule authz_dbm_module modules/mod_authz_dbm.so

LoadModule authz_default_module modules/mod_authz_default.so

LoadModule authz_groupfile_module modules/mod_authz_groupfile.so

LoadModule authz_host_module modules/mod_authz_host.so

LoadModule authz_owner_module modules/mod_authz_owner.so

LoadModule authz_user_module modules/mod_authz_user.so

LoadModule autoindex_module modules/mod_autoindex.so

<IfDefine CACHE>

LoadModule cache_module modules/mod_cache.so

</IfDefine>

LoadModule cgi_module modules/mod_cgi.so

<IfDefine DAV>

LoadModule dav_module modules/mod_dav.so

</IfDefine>

<IfDefine DAV>

LoadModule dav_fs_module modules/mod_dav_fs.so

</IfDefine>

<IfDefine DAV>

LoadModule dav_lock_module modules/mod_dav_lock.so

</IfDefine>

LoadModule deflate_module modules/mod_deflate.so

LoadModule dir_module modules/mod_dir.so

<IfDefine CACHE>

LoadModule disk_cache_module modules/mod_disk_cache.so

</IfDefine>

LoadModule env_module modules/mod_env.so

LoadModule expires_module modules/mod_expires.so

LoadModule ext_filter_module modules/mod_ext_filter.so

<IfDefine CACHE>

LoadModule file_cache_module modules/mod_file_cache.so

</IfDefine>

LoadModule filter_module modules/mod_filter.so

LoadModule headers_module modules/mod_headers.so

LoadModule include_module modules/mod_include.so

<IfDefine INFO>

LoadModule info_module modules/mod_info.so

</IfDefine>

<IfDefine LDAP>

LoadModule ldap_module modules/mod_ldap.so

</IfDefine>

LoadModule log_config_module modules/mod_log_config.so

LoadModule logio_module modules/mod_logio.so

<IfDefine CACHE>

LoadModule mem_cache_module modules/mod_mem_cache.so

</IfDefine>

LoadModule mime_module modules/mod_mime.so

LoadModule mime_magic_module modules/mod_mime_magic.so

LoadModule negotiation_module modules/mod_negotiation.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule setenvif_module modules/mod_setenvif.so

LoadModule speling_module modules/mod_speling.so

<IfDefine SSL>

LoadModule ssl_module modules/mod_ssl.so

</IfDefine>

<IfDefine STATUS>

LoadModule status_module modules/mod_status.so

</IfDefine>

LoadModule unique_id_module modules/mod_unique_id.so

<IfDefine USERDIR>

LoadModule userdir_module modules/mod_userdir.so

</IfDefine>

LoadModule usertrack_module modules/mod_usertrack.so

LoadModule vhost_alias_module modules/mod_vhost_alias.so

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.

#

# User/Group: The name (or #number) of the user/group to run httpd as.

# It is usually good practice to create a dedicated user and group for

# running httpd, as with most system services.

User apache

Group apache

# Supplemental configuration

#

# Most of the configuration files in the /etc/apache2/modules.d/ directory can

# be turned on using APACHE2_OPTS in /etc/conf.d/apache2 to add extra features

# or to modify the default configuration of the server.

#

# To know which flag to add to APACHE2_OPTS, look at the first line of the

# the file, which will usually be an <IfDefine OPTION> where OPTION is the

# flag to use.

Include /etc/apache2/modules.d/*.conf

Include /etc/apache2/conf/webalizer.conf

# Virtual-host support

#

# Gentoo has made using virtual-hosts easy. In /etc/apache2/vhosts.d/ we

# include a default vhost (enabled by adding -D DEFAULT_VHOST to

# APACHE2_OPTS in /etc/conf.d/apache2).

Include /etc/apache2/vhosts.d/*.conf

Listen *:80

# vim: ts=4 filetype=apache

```

and my dynamic vhost file /etc/apache2/vhosts.d/10_dynamic_vhost.conf: 

```
### Dynamic Virtual Hosts

#

# Dynamic VirtualHost: If you want to maintain multiple domains/hostnames on

# your machine and have the process be semi-automatted, you can enable dynamic

# virtual hosts.  Apache will automatically host folders under /var/www/vhosts

# as their corresponding domain names.  An example of this is:

# If you create the folder example.com under /var/www/vhosts, now Apache can

# serve pages for example.com using the /var/www/vhosts/example.com folder.

#

# Hint: Aliasing the sub-domain www.[example.com] can be easily accomplished

# by simply simlinking www.[example.com] to [example.com].

#

# Please see the documentation at

# <URL:http://httpd.apache.org/docs-2.0/vhosts/>

# and

# <URL:http://www.apache.org/docs/vhosts/mass.html>

# for further details before you try to setup virtual hosts.

#

# Note: Dynamic Virtual Hosts uses the mod_vhost_alias apache module.

<IfDefine DYNAMIC_VHOSTS>

  #

  # Use name-based virtual hosting.

  #

  NameVirtualHost *:80

  UseCanonicalName Off

  LogFormat "%V %h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" dynamic_vhosts

  CustomLog logs/access_log dynamic_vhosts

  <VirtualHost *:80>

    #

    # Security Directive

    #

    <Directory "/var/www/vhosts">

      #

      # Possible values for the Options directive are "None", "All",

      # or any combination of:

      #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

      #

      # Note that "MultiViews" must be named *explicitly* --- "Options All"

      # doesn't give it to you.

      #

      # The Options directive is both complicated and important.  Please see

      # http://httpd.apache.org/docs-2.0/mod/core.html#options

      # for more information.

      #

      Options -Indexes FollowSymLinks MultiViews

      #

      # AllowOverride controls what directives may be placed in .htaccess files.

      # It can be "All", "None", or any combination of the keywords:

      #   Options FileInfo AuthConfig Limit

      #

      AllowOverride All

      #

      # Controls who can get stuff from the dynamic virtual hosts.

      #

      Order allow,deny

      Allow from all

    </Directory>

    # Dynamic Virtual Host Definitions

    #

    <IfModule mod_vhost_alias.c>

      # example.com              -->  /var/www/vhosts/example.com/htdocs

      # www.example.com          -->  /var/www/vhosts/www.example.com/htdocs

      # a.www.example.com        -->  /var/www/vhosts/a.www.example.com/htdocs

      # www.example.com/cgi-bin  -->  /var/www/vhosts/www.example.com/cgi-bin

      VirtualDocumentRoot /var/www/vhosts/%0.0/htdocs

      VirtualScriptAlias /var/www/vhosts/%0.0/cgi-bin

      # example.com              -->  /var/www/vhosts/example.com

      # www.example.com          -->  /var/www/vhosts/www.example.com

      # a.www.example.com        -->  /var/www/vhosts/a.www.example.com

      # www.example.com/cgi-bin  -->  /var/www/vhosts/www.example.com/cgi-bin

      #VirtualDocumentRoot /var/www/vhosts/%0.0

      #VirtualScriptAlias /var/www/vhosts/%0.0/cgi-bin

      # example.com              -->  /var/www/vhosts/example.com

      # www.example.com          -->  /var/www/vhosts/example.com

      # a.www.example.com        -->  /var/www/vhosts/example.com

      # www.example.com/cgi-bin  -->  /var/www/vhosts/example.com/cgi-bin

      #VirtualDocumentRoot /var/www/vhosts/%-2.0.%-1.0

      #VirtualScriptAlias /var/www/vhosts/%-2.0.%-1.0/cgi-bin

      # example.com              -->  /var/www/vhosts/example.com/_

      # www.example.com          -->  /var/www/vhosts/example.com/www

      # a.www.example.com        -->  /var/www/vhosts/example.com/a.www

      # example.com/cgi-bin      -->  /var/www/vhosts/example.com/_/cgi-bin

      # www.example.com/cgi-bin  -->  /var/www/vhosts/example.com/a.www/cgi-bin

      #VirtualDocumentRoot /var/www/vhosts/%-2.0.%-1.0/%-3+/

      #VirtualScriptAlias /var/www/vhosts/%-2.0.%-1.0/%-3+/cgi-bin

      # CGI Directives

      #

      <DirectoryMatch "^/var/www/vhosts/[^/]+/cgi-bin">

        AllowOverride None

        Options ExecCGI

        <IfModule mod_access.c>

          Order allow,deny

          Allow from all

        </IfModule>

      </DirectoryMatch>

    </IfModule>

  </VirtualHost>

</IfDefine>

```

Can somebody help me?

thanks

----------

## honp

Try apache error log. It is in /var/log/apache/*

----------

## raphy

Apache logs says 

```
[Sat Jun 20 14:41:09 2009] [error] [client 209.85.238.112] client denied by server configuration: /usr/htdocs
```

problem is, I'm sure I configure the path to the documents. I don't know where to look?

----------

## honp

In this case i do this:

grep -r findingpattern /etc/

(but i don`t like this solution so don`t tell anyone:) )

----------

