I'm trying to disallow the basic 80 HTTP server to be at the root of my dynamic DNS, but instead use a subdirectory.
so instead of
blabla.dynamicdns.org
it won't be served
but at
blabla.dynamicdns.org/service
it would be.
This configuration attempt did not work. Says document roots are not allowed in Directory tags.
I know how much SE loves its examples, I'm dumping this otherwise vanilla config here anyway.
I literally know nothing and I literally need to be spoon-fed here and it's a pill to Google for this.
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
<Directory /var/www/html/ampache/>
DocumentRoot /var/www/html/ampache
DocumentRoot /var/www/html/ampache/public
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
A more correct config, that still does not yield my desired result:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/ampache
DocumentRoot /var/www/html/ampache/public
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Sorry for this de facto spam, but my history with SE and lust for "working examples" on topics I don't even know how they work, has forced my hand.
DocumentRoot
always defines the mapping of/
(the root directory of your URLs). To define mappings for URL subdirectories, instead useAlias
. See Mapping URLs for a general overview.(Roughly speaking,
DocumentRoot /var/foo
is likeAlias "/" /var/foo
.)If you don't want to serve anything at
/
, map DocumentRoot to an empty directory (possibly even one with restricted permissions) and use Alias to define the individual subdirectories you want.It doesn't make sense to have more than one DocumentRoot per vhost, as they all would define mappings for the same
/
and a URL can only go to one location at a time – only the last definition will be used. Likewise it doesn't make sense to Alias the same path more than once.