如何设置 apache 以具有重叠虚拟主机通配符服务器别名?

如何设置 apache 以具有重叠虚拟主机通配符服务器别名?

我有一个使用 apache/wamp 的子域开发设置,使用“常规”设置和“xyz”设置时一切都按我需要的方式工作,但每次我需要不同的设置时,我都必须更改配置并重新启动服务器。

有没有办法让两种设置同时工作?

我正在寻找允许我同时访问这两个设置的答案,而无需更改用于访问它们的 URL 或端口。

这是我的常规设置

<VirtualHost *:9090>
    ServerName localhost.com
    ServerAlias *.localhost.com
    VirtualDocumentRoot u:\wamp\www\subdomains\%1
    <directory "u:\wamp\www\subdomains\%1">
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from all
    </directory>
</VirtualHost>

这是我的辅助(xyz)设置

<VirtualHost *:9090>
    ServerName localhost.com
    ServerAlias *.xyz.localhost.com
    VirtualDocumentRoot u:\wamp\www\subdomains\xyz
    <directory "u:\wamp\www\subdomains\xyz">
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from all
    </directory>
</VirtualHost>

答案1

你处理这个问题的方式不太正确。

ServerName 和 ServerAlias 有点多余。ServerName 提供虚拟主机的“主要”名称,在需要时可识别虚拟主机。ServerAlias 提供映射到虚拟主机的其他名称。

ServerName 也不必是服务器的实际主机名(使用 FQDN)。它可以是任意的,并且可以对于所有虚拟主机都不同。

假设您使用www.localhost.com访问一个服务器,并www.xyz.localhost.com访问另一个服务器,则只需使用localhost.comxyz.localhost.com作为 ServerName 参数,并保留相同的通配符。但请记住,这xyz.localhost.com将转到这些虚拟主机中首先出现的那个(具有按词汇顺序排在第一位的文件名)。

附注:请勿使用不属于您的域名。如果您的目的是为了文档目的而混淆实际域名,请使用example.net

相关内容