多个虚拟主机网站无法正常工作

多个虚拟主机网站无法正常工作

我正在尝试使用 Mac OSX 10.11.2 中内置的 apache web 服务器 (2.4) 在本地开发一个独立于默认网站的网站。我相信这可以使用基于名称的虚拟主机来实现。因此,我修改了我的/etc/hosts文件,使其包含以下行

127.0.0.1    localhost
127.0.0.1    testwebsite.com

我编辑了我的 httpd.conf 文件以使用 vhosts 文件/extra

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

我将其编辑httpd-vhosts.conf如下:

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<Directory "/Users/me/testwebsite/DocRoot">                                  
    Options FollowSymLinks Multiviews                                            
    MultiviewsMatch Any 
    AllowOverride None
    Require all granted                                                  
</Directory>
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/Users/me/testwebsite/DocRoot"
    ServerName testwebsite.com
    ErrorLog "/Users/me/testwebsite/error-log"
    CustomLog "/Users/me/testwebsite/access-log" common
</VirtualHost>

#<VirtualHost *:80>
#    ServerAdmin [email protected]
#    DocumentRoot "/usr/docs/dummy-host2.example.com"
#    ServerName dummy-host2.example.com
#    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
#    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
#</VirtualHost>

但浏览器中的请求全部转到新的文档根目录。也就是说,我希望localhost从服务器的默认文档根目录为 提供“它有效!”html 文件,而仅为 的请求提供来自新文档根目录的文件testwebsite.com

答案1

您需要为每个要提供的虚拟主机添加一个 VirtualHost 部分。因此,请添加另一个 Virtual Host 部分并相应地修改这些条目。

总而言之,你会得到类似这样的结果:

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/the/other/path/DocRoot"
ServerName localhost
ErrorLog "/other/path/error-log"
CustomLog "/other/path/access-log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/Users/me/testwebsite/DocRoot"
ServerName testwebsite.com
ErrorLog "/Users/me/testwebsite/error-log"
CustomLog "/Users/me/testwebsite/access-log" common
</VirtualHost>

诀窍是正确使用 ServerName,您已经做到了这一点。然后破解 hosts 文件,重新启动 Apache,一切就绪。

相关内容