examples.html.en revision 84ef01e0cc5691422370a55f218f43f425d99a9c
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster<?xml version="1.0" encoding="ISO-8859-1"?>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster This file is generated from xml source: DO NOT EDIT
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster --><title>VirtualHost Examples - Apache HTTP Server</title><link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /><link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /><link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link href="/images/favicon.ico" rel="shortcut icon" /></head><body id="manual-page"><div id="page-header"><p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="/images/feather.gif" /></div><div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs-project/">Documentation</a> &gt; <a href="../">Version 2.0</a> &gt; <a href="./">Virtual Hosts</a></div><div id="page-content"><div id="preamble"><h1>VirtualHost Examples</h1>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>This document attempts to answer the commonly-asked questions about
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster setting up virtual hosts. These scenarios are those involving multiple
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster web sites running on a single server, via <a href="name-based.html">name-based</a> or <a href="ip-based.html">IP-based</a> virtual hosts. A document should be
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster coming soon about running sites on several servers behind a single
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster proxy server.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster</div><div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#purename">Running several name-based web
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster sites on a single IP address.</a></li><li><img alt="" src="/images/down.gif" /> <a href="#twoips">Name-based hosts on more than one
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster IP address.</a></li><li><img alt="" src="/images/down.gif" /> <a href="#intraextra">Serving the same content on
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster different IP addresses (such as an internal and external
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster address).</a></li><li><img alt="" src="/images/down.gif" /> <a href="#port">Running different sites on different
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ports.</a></li><li><img alt="" src="/images/down.gif" /> <a href="#ip">IP-based virtual hosting</a></li><li><img alt="" src="/images/down.gif" /> <a href="#ipport">Mixed port-based and ip-based virtual
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster hosts</a></li><li><img alt="" src="/images/down.gif" /> <a href="#mixed">Mixed name-based and IP-based
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster vhosts</a></li><li><img alt="" src="/images/down.gif" /> <a href="#default">Using <code>_default_</code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster vhosts</a></li><li><img alt="" src="/images/down.gif" /> <a href="#migrate">Migrating a name-based vhost to an
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster IP-based vhost</a></li><li><img alt="" src="/images/down.gif" /> <a href="#serverpath">Using the <code>ServerPath</code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster directive</a></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="purename" id="purename">Running several name-based web
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster sites on a single IP address.</a></h2>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>Your server has a single IP address, and multiple aliases (CNAMES)
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster point to this machine in DNS. You want to run a web server for
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>www.example1.com</code> and <code>www.example2.org</code> on this
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster machine.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="note"><h3>Note</h3><p>Creating virtual
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster host configurations on your Apache server does not magically
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster cause DNS entries to be created for those host names. You
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <em>must</em> have the names in DNS, resolving to your IP
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster address, or nobody else will be able to see your web site. You
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster can put entries in your <code>hosts</code> file for local
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster testing, but that will work only from the machine with those
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster hosts entries.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major # Ensure that Apache listens on port 80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Listen 80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # Listen for virtual host requests on all IP addresses<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster NameVirtualHost *<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost *&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example1<br />
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington ServerName www.example1.com<br />
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington <br />
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington # Other directives here<br />
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost *&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example2<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example2.org<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # Other directives here<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
133bed8ec2ccc857a62d6301f67c3ef3d36aa333Peter Major </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major </code></p></div>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major
02262df52a4ab5e8bd0769e78e64059d3844c6d8Bernhard Thalmayr <p>The asterisks match all addresses, so the main server serves no
02262df52a4ab5e8bd0769e78e64059d3844c6d8Bernhard Thalmayr requests. Due to the fact that <code>www.example1.com</code> is first
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major in the configuration file, it has the highest priority and can be seen
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster as the <cite>default</cite> or <cite>primary</cite> server. That means
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster that if a request is received that does not match one of the specified
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>ServerName</code> directives, it will be served by this first
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>VirtualHost</code>.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="note">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <h3>Note</h3>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>You can, if you wish, replace <code>*</code> with the actual
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster IP address of the system. In that case, the argument to
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>VirtualHost</code> <em>must</em> match the argument to
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>NameVirtualHost</code>:</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster NameVirtualHost 172.20.30.40<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # etc ...
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>However, it is additionally useful to use <code>*</code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major on systems where the IP address is not predictable - for
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster example if you have a dynamic IP address with your ISP, and
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster you are using some variety of dynamic DNS solution. Since
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>*</code> matches any IP address, this configuration
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major would work without changes whenever your IP address
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster changes.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>The above configuration is what you will want to use in almost
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster all name-based virtual hosting situations. The only think that this
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster configuration will not work for, in fact, is when you are serving
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major different content based on differing IP addresses or ports.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="twoips" id="twoips">Name-based hosts on more than one
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster IP address.</a></h2>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="note">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <h3>Note</h3><p>Any of the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster techniques discussed here can be extended to any number of IP
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster addresses.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>The server has two IP addresses. On one (<code>172.20.30.40</code>), we
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster will serve the "main" server, <code>server.domain.com</code> and on the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster other (<code>172.20.30.50</code>), we will serve two or more virtual hosts.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Listen 80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # This is the "main" server running on 172.20.30.40<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName server.domain.com<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/mainserver<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # This is the other address<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster NameVirtualHost 172.20.30.50<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.50&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example1<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example1.com<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # Other directives here ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.50&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example2<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example2.org<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # Other directives here ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>Any request to an address other than <code>172.20.30.50</code> will be
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster served from the main server. A request to <code>172.20.30.50</code> with an
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster unknown hostname, or no <code>Host:</code> header, will be served from
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>www.example1.com</code>.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="intraextra" id="intraextra">Serving the same content on
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster different IP addresses (such as an internal and external
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster address).</a></h2>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>The server machine has two IP addresses (<code>192.168.1.1</code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster and <code>172.20.30.40</code>). The machine is sitting between an
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major internal (intranet) network and an external (internet) network. Outside
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster of the network, the name <code>server.example.com</code> resolves to
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major the external address (<code>172.20.30.40</code>), but inside the
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major network, that same name resolves to the internal address
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major (<code>192.168.1.1</code>).</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>The server can be made to respond to internal and external requests
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major with the same content, with just one <code>VirtualHost</code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major section.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <div class="example"><h3>Server configuration</h3><p><code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major NameVirtualHost 192.168.1.1<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major NameVirtualHost 172.20.30.40<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 192.168.1.1 172.20.30.40&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/server1<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName server.example.com<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerAlias server<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </code></p></div>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>Now requests from both networks will be served from the same
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>VirtualHost</code>.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <div class="note">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <h3>Note:</h3><p>On the internal
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major network, one can just use the name <code>server</code> rather
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major than the fully qualified host name
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>server.example.com</code>.</p>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major <p>Note also that, in the above example, you can replace the list
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major of IP addresses with <code>*</code>, which will cause the server to
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major respond the same on all addresses.</p>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major </div>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="port" id="port">Running different sites on different
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ports.</a></h2>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>You have multiple domains going to the same IP and also want to
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major serve multiple ports. By defining the ports in the "NameVirtualHost"
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major tag, you can allow this to work. If you try using &lt;VirtualHost
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major name:port&gt; without the NameVirtualHost name:port or you try to use
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major the Listen directive, your configuration will not work.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <div class="example"><h3>Server configuration</h3><p><code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Listen 80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major Listen 8080<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major NameVirtualHost 172.20.30.40:80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major NameVirtualHost 172.20.30.40:8080<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40:80&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example1.com<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/domain-80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40:8080&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example1.com<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/domain-8080<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40:80&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example2.org<br />
a27fbb5985dbc288dc656c25d22a4d1e5d4a7a92Peter Major DocumentRoot /www/otherdomain-80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
a27fbb5985dbc288dc656c25d22a4d1e5d4a7a92Peter Major &lt;/VirtualHost&gt;<br />
02262df52a4ab5e8bd0769e78e64059d3844c6d8Bernhard Thalmayr <br />
02262df52a4ab5e8bd0769e78e64059d3844c6d8Bernhard Thalmayr &lt;VirtualHost 172.20.30.40:8080&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example2.org<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/otherdomain-8080<br />
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </code></p></div>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="ip" id="ip">IP-based virtual hosting</a></h2>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>The server has two IP addresses (<code>172.20.30.40</code> and
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>172.20.30.50</code>) which resolve to the names
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>www.example1.com</code> and <code>www.example2.org</code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major respectively.</p>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <div class="example"><h3>Server configuration</h3><p><code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major Listen 80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
02262df52a4ab5e8bd0769e78e64059d3844c6d8Bernhard Thalmayr &lt;VirtualHost 172.20.30.40&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example1<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example1.com<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.50&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example2<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example2.org<br />
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major </span>
0e93e49a78b66390d2ff541eea6307b4c3fb33b4Peter Major &lt;/VirtualHost&gt;
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </code></p></div>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>Requests for any address not specified in one of the
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>&lt;VirtualHost&gt;</code> directives (such as
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>localhost</code>, for example) will go to the main server, if
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major there is one.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
02262df52a4ab5e8bd0769e78e64059d3844c6d8Bernhard Thalmayr </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="ipport" id="ipport">Mixed port-based and ip-based virtual
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major hosts</a></h2>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>The server machine has two IP addresses (<code>172.20.30.40</code> and
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>172.20.30.50</code>) which resolve to the names
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <code>www.example1.com</code> and <code>www.example2.org</code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major respectively. In each case, we want to run hosts on ports 80 and
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster 8080.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Listen 172.20.30.40:80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Listen 172.20.30.40:8080<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Listen 172.20.30.50:80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major Listen 172.20.30.50:8080<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40:80&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example1-80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example1.com<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.40:8080&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example1-8080<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example1.com<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.50:80&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example2-80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example1.org<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.50:8080&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example2-8080<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example2.org<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="mixed" id="mixed">Mixed name-based and IP-based
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major vhosts</a></h2>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>On some of my addresses, I want to do name-based virtual hosts, and
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major on others, IP-based hosts.</p>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major Listen 80<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major NameVirtualHost 172.20.30.40<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example1<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example1.com<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example2<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example2.org<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example3<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major ServerName www.example3.net<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major # IP-based<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major &lt;VirtualHost 172.20.30.50&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example4<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example4.edu<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.60&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example5<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example5.gov<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="default" id="default">Using <code>_default_</code>
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major vhosts</a></h2>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <h3><a name="defaultallports" id="defaultallports"><code>_default_</code> vhosts
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster for all ports</a></h3>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>Catching <em>every</em> request to any unspecified IP address and
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster port, <em>i.e.</em>, an address/port combination that is not used for
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster any other virtual host.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost _default_:*&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/default<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>Using such a default vhost with a wildcard port effectively prevents
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster any request going to the main server.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>A default vhost never serves a request that was sent to an
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major address/port that is used for name-based vhosts. If the request
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster contained an unknown or no <code>Host:</code> header it is always
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster served from the primary name-based vhost (the vhost for that
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster address/port appearing first in the configuration file).</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>You can use <code class="directive"><a href="/mod/mod_alias.html#aliasmatch">AliasMatch</a></code> or
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> to rewrite any
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster request to a single information page (or script).</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <h3><a name="defaultdifferentports" id="defaultdifferentports"><code>_default_</code> vhosts
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster for different ports</a></h3>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <p>Same as setup 1, but the server listens on several ports and we want
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster to use a second <code>_default_</code> vhost for port 80.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost _default_:80&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/default80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost _default_:*&gt;<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/default<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>The default vhost for port 80 (which <em>must</em> appear before any
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster default vhost with a wildcard port) catches all requests that were sent
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster to an unspecified IP address. The main server is never used to serve a
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster request.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
133bed8ec2ccc857a62d6301f67c3ef3d36aa333Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <h3><a name="defaultoneport" id="defaultoneport"><code>_default_</code> vhosts
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster for one port</a></h3>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>We want to have a default vhost for port 80, but no other default
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster vhosts.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost _default_:80&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/default<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </code></p></div>
133bed8ec2ccc857a62d6301f67c3ef3d36aa333Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>A request to an unspecified address on port 80 is served from the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster default vhost any other request to an unspecified address and port is
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster served from the main server.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="migrate" id="migrate">Migrating a name-based vhost to an
133bed8ec2ccc857a62d6301f67c3ef3d36aa333Peter Major IP-based vhost</a></h2>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>The name-based vhost with the hostname
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>www.example2.org</code> (from our <a href="#name">name-based</a> example, setup 2) should get its own IP
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster address. To avoid problems with name servers or proxies who cached the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster old IP address for the name-based vhost we want to provide both
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major variants during a migration phase.<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster The solution is easy, because we can simply add the new IP address
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster (<code>172.20.30.50</code>) to the <code>VirtualHost</code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster directive.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major
133bed8ec2ccc857a62d6301f67c3ef3d36aa333Peter Major Listen 80<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example1.com<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example1<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster NameVirtualHost 172.20.30.40<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.40 172.20.30.50&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/example2<br />
133bed8ec2ccc857a62d6301f67c3ef3d36aa333Peter Major ServerName www.example2.org<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major DocumentRoot /www/example3<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.example3.net<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerAlias *.example3.net<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>The vhost can now be accessed through the new address (as an
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster IP-based vhost) and through the old address (as a name-based
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster vhost).</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="serverpath" id="serverpath">Using the <code>ServerPath</code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster directive</a></h2>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>We have a server with two name-based vhosts. In order to match the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster correct virtual host a client must send the correct <code>Host:</code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster header. Old HTTP/1.0 clients do not send such a header and Apache has
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster no clue what vhost the client tried to reach (and serves the request
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster from the primary vhost). To provide as much backward compatibility as
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major possible we create a primary vhost which returns a single page
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster containing links with an URL prefix to the name-based virtual
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster hosts.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <div class="example"><h3>Server configuration</h3><p><code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster NameVirtualHost 172.20.30.40<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # primary vhost<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/subdomain<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster RewriteEngine On<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster RewriteRule ^/.* /www/subdomain/index.html<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/subdomain/sub1<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.sub1.domain.tld<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerPath /sub1/<br />
7b231e67dc8acb6995cce9bcdbc71f40a4f37dd9Peter Major RewriteEngine On<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster RewriteRule ^(/sub1/.*) /www/subdomain$1<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;VirtualHost 172.20.30.40&gt;<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <span class="indent">
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster DocumentRoot /www/subdomain/sub2<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerName www.sub2.domain.tld<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster ServerPath /sub2/<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster RewriteEngine On<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster RewriteRule ^(/sub2/.*) /www/subdomain$1<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster # ...<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </span>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster &lt;/VirtualHost&gt;
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </code></p></div>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <p>Due to the <code class="directive"><a href="/mod/core.html#serverpath">ServerPath</a></code>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster directive a request to the URL
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>http://www.sub1.domain.tld/sub1/</code> is <em>always</em> served
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster from the sub1-vhost.<br /> A request to the URL
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>http://www.sub1.domain.tld/</code> is only
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster served from the sub1-vhost if the client sent a correct
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>Host:</code> header. If no <code>Host:</code> header is sent the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster client gets the information page from the primary host.<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster Please note that there is one oddity: A request to
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>http://www.sub2.domain.tld/sub1/</code> is also served from the
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster sub1-vhost if the client sent no <code>Host:</code> header.<br />
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster The <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> directives
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster are used to make sure that a client which sent a correct
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster <code>Host:</code> header can use both URL variants, <em>i.e.</em>,
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster with or without URL prefix.</p>
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster
2d0a88b18a041738cfe635b45bd1db56af469c91Allan Foster </div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div></body></html>