如何让 apache 无论主机名是什么都提供同一个网站服务?

如何让 apache 无论主机名是什么都提供同一个网站服务?

现在我的默认站点启用如下所示:

ServerName www.my.site.com
DocumentRoot "/opt/site/web"
DirectoryIndex index.php
<Directory "/opt/site/web">
>.Allow from all
>.Satisfy any 
</Directory>
>.

<VirtualHost _default_:80>
  ServerName my.site.com
  DocumentRoot "/opt/site/web"
  DirectoryIndex index.php
<Directory "/opt/site/web">
>.Allow from all
>.Satisfy any 
</Directory>

我想让它为位于 /opt/site/web 的站点提供服务,无论提供什么主机名。我尝试将第一行更改为 ServerName *,但没有成功...我遗漏了什么?

答案1

看:http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost

删除 NameVirtualHost 和 ServerName 指令,然后_default_:80虚拟主机应该可以满足所有请求。

答案2

基于名称的虚拟主机旨在执行与您想要的相反的操作,因此您不应使用它们,并且应该注释掉或不使用 NameVirtualHost。

您的配置应包括如下指令。

<Directory "/opt/site/web">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

DocumentRoot "/opt/site/web"

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

在 Centos 上,Apache 的默认安装将完全按照你的要求进行,你只需要将 html 的默认目录更改为 /opt/site/web

答案3

我同意其他人的意见,你应该删除这个VirtualHost诗节。

但您也可以将其用作ServerName *捕获所有主机名。这将匹配配置文件中之前未列出的任何主机名。

相关内容