⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 name-based.html

📁 这个是我在web培训时老师提供的手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
            DocumentRoot /www/domain<br />
        </span>
        &lt;/VirtualHost&gt;<br />
        <br />
        &lt;VirtualHost *:80&gt;<br />
        <span class="indent">ServerName www.otherdomain.tld<br />
            DocumentRoot /www/otherdomain<br />
        </span>
        &lt;/VirtualHost&gt;<br />
    </code></p></div>

    <p>当然,你可以用一个固定的IP地址来代替<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>和<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>指令中的"<code>*</code>"号,以达到一些特定的目的。比如说,你可能会希望在一个IP地址上运行一个基于域名的虚拟主机,而在另外一个IP地址上运行一个基于IP的或是另外一套基于域名的虚拟主机。</p>

    <p>很多服务器希望自己能通过不只一个域名被访问。我们可以把<code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code>指令放入<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>小节中来解决这个问题。比如说在上面的第一个<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>配置段中<code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code>指令中列出的名字就是用户可以用来访问同一个web站点的其它名字:</p>

    <div class="example"><p><code>
        ServerAlias domain.tld *.domain.tld
    </code></p></div>

    <p>这样,所有对域<code>domain.tld</code>的访问请求都将由虚拟主机<code>www.domain.tld</code>处理。通配符标记"<code>*</code>"和"<code>?</code>"可以用于域名的匹配。当然你不能仅仅搞个名字然后把它放到<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>或<code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code>里就算完了。你必须先在你的DNS服务器上进行配置,将这些名字和您服务器上的一个IP地址建立映射关系。</p>

    <p>最后,你可以把其他一些指令放入<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>段中,以更好的配置一个虚拟主机。大部分指令都可以放入这些<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>段中以改变相应虚拟主机配置。如果您想了解一个特定的指令是否可以这样运用,请参见指令的<a href="../mod/directive-dict.html#Context">作用域</a>。<em>主服务器(main server)</em>范围内的配置指令(在所有<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>配置段之外的指令)仅在它们没有被虚拟主机的配置覆盖时才起作用。</p>

    <p>这样,当一个请求到达的时候,服务器会首先检查它是否使用了一个能和<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>相匹配的IP地址。如果能够匹配,它就会查找每个与这个IP地址相对应的<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>段,并尝试找出一个与请求的主机名相同的<code class="directive"><a href="../mod/core.html#servername">ServerName</a></code>或<code class="directive"><a href="../mod/core.html#serveralias">ServerAlias</a></code>配置项。如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的<strong>第一个列出的虚拟主机</strong>。</p>

    <p>综上所述,第一个列出的虚拟主机充当了<em>默认虚拟主机</em>的角色。当一个IP地址与<code class="directive"><a href="../mod/core.html#namevirtualhost">NameVirtualHost</a></code>指令中的配置相符的时候,<em>主服务器</em>中的<code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>将<strong>永远不会</strong>被用到。所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的话,你只要简单的把这段配置放到<code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>段中,并把它放到配置文件的最前面就可以了。</p>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="compat" id="compat">与旧版浏览器的兼容性</a></h2>

    <p>前面提过,有些浏览器无法对基于域名的虚拟主机发送必要的数据,从而使其无法正常工作。这些浏览器将会收到由配置中符合那个IP地址的第一个列出的虚拟主机发出的页面(基于域名的<cite>主虚拟主机</cite>)。</p>

    <div class="note"><h3>究竟什么算旧?</h3>
    <p>请注意,当我们说到旧的时候,我们并不是真的说它们很古老。其实现实中您未必就能用上这些浏览器。现在几乎所有的浏览器都会发送基于域名的虚拟主机所必须的<code>Host</code>头了。</p>
    </div>

    <p>虽然有点麻烦。但您还是有可能会用到<code class="directive"><a href="../mod/core.html#serverpath">ServerPath</a></code>指令,以下是一个配置实例:</p>

    <div class="example"><p><code>
        NameVirtualHost 111.22.33.44<br />
        <br />
        &lt;VirtualHost 111.22.33.44&gt;<br />
        <span class="indent">
            ServerName www.domain.tld<br />
            ServerPath /domain<br />
            DocumentRoot /web/domain<br />
        </span>
        &lt;/VirtualHost&gt;<br />
    </code></p></div>

    <p>以上这些说明了什么呢?它说明一个具有"<code>/domain</code>"开头的任何URI都会为<code>www.domain.tld</code>这个虚拟主机所伺服。这意味着这个页面可以由<code>http://www.domain.tld/domain/</code>的形式为所有的浏览器所访问。能够发送"<code>Host:</code>"头的浏览器也能使用<code>http://www.domain.tld/</code>这种形式来访问它。</p>

    <p>为了达到这样的目的。您先要在您的主虚拟主机的页面上放一个到<code>http://www.domain.tld/domain/</code>的链接。然后,确保在虚拟主机的页面中使用的全是相对链接(诸如:"<code>file.html</code>"或"<code>../icons/image.gif</code>")或者是包含<code>/domain/</code>这个前缀(比如:"<code>http://www.domain.tld/domain/misc/file.html</code>"或"<code>/domain/misc/file.html</code>")。</p>

    <p>完成这些可能需要一些尝试,但遵照上述指导将会确保你的页面能够为所有的浏览器所正确显示,不论新旧。</p>

</div></div>
<div id="footer">
<p class="apache">本文允许自由使用、分发、转载,但必须保留译者署名;详见:<a href="../translator_announcement.html#announcement">译者声明</a>。</p>
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p></div>
</body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -