具有通配符域名子域的 VirtualHosts。*

具有通配符域名子域的 VirtualHosts。*

我正在尝试在 Apache 上设置虚拟主机,以响应某些子域名,但任何域名

例如

子域名.*

因此,任何与 subxdomain 一起指向机器的域都可以工作

服务器名称 web.* ...

因此 web.blahblah.com 和 web.mooose.com 都可以工作(*.blahblah.com 和 *.mooose.com 都解析到同一台机器)

答案1

下面的代码片段应该可以解决问题:

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName subdomain
  ServerAlias subdomain.*
  # other directives for the particular vhost
</VirtualHost>

请参阅服务器别名基于名称的虚拟主机支持了解详情。

答案2

我不确定您是否可以使用海量虚拟主机(apache2)。我以前从未做过这样的事情。 http://httpd.apache.org/docs/2.0/vhosts/mass.html

您到底想通过这个解决方案实现什么目的?

答案3

这并不难。

默认情况下,Apache 将响应您配置的任何端口上的所有流量。

只需将其设置为监听分配了地址的 IP 上的端口 80。

为每个命名站点设置具有不同目录和主机名的 Vhost,这些应该优先于通配符。

这将使所有命名的站点都去到它们需要去的地方,并且服务器收到的任何其他内容都将获得默认页面。

为了确保万无一失,我会将命名的站点放在 httpd.conf 中的通配符上方

答案4

不能将通配符与 ServerName 一起使用。

你可以做的是使用默认的 VirtualHost 作为万能工具:

<VirtualHost *:80>
  # NEVER add a ServerName in this VirtualHost
(...)
</VirtualHost>

只要 web.blahblah.com 和 web.mooose.com 没有 VirtualHost,它们都会在默认 VirtualHost 下工作。

您还可以使用重写将请求重定向到不同的 URL:

  RewriteCond %{HTTP_HOST}      ^web.moose.com$
  RewriteRule ^/(.*)$ http://other.moose.com/web/$1 [R,L]

希望有所帮助。

干杯

相关内容