我正在尝试使用 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,一切就绪。