我的本地 Mac 上有几个开发网站的本地版本,并且想要通过 vhosts 从浏览器访问它们,并且不时使用实时(网络)版本。
我读过许多人通过更改 URL 来做类似的事情,并让 Apache 监听唯一的 URL 以从本地位置提供服务的例子。我一直使用相同的URL,但是端口不同,虽然它可以在 Windows 上无缝运行,但我无法让它在 Mac 上运行。
(假设)我有两个网站:
- amazingwebsite.com
- facebookiller.org
Listen *:8080
我想使用相同的 URL 访问本地版本,通过启用浏览器的代理(单击一次),我已将其设置为 8080。apache在 httpd.conf 中设置。
在 httpd-vhosts.conf 中(其中是加载)我有:
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerAdmin [email protected]
ServerName amazingwebsite.com
ServerAlias www.amazingwebsite.com
DocumentRoot "/Users/username/Development/Projects/amazingwebsite"
<Directory "/Users/username/Development/Projects/amazingwebsite/">
Options Includes Indexes Multiviews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
“facebookkiller.org”虚拟主机基本相同 - 只是本地位置不同。
我的/private/etc/hosts
现在设置为:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
fe80::1%lo0 localhost
127.0.0.1 amazingwebsite.com
127.0.0.1 facebookkiller.org
并在 apache 重新启动(关闭/打开网络共享)后,apachectl -S
报告:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:8080 is a NameVirtualHost
default server amazingwebsite.com (/private/etc/apache2/other/httpd-vhosts.conf:4)
port 8080 namevhost amazingwebsite.com (/private/etc/apache2/other/httpd-vhosts.conf:4)
port 8080 namevhost facebookkiller.org (/private/etc/apache2/other/httpd-vhosts.conf:19)
Syntax OK
我觉得还不错。
行为?:
- amazingwebsite.com:8080 => 本地安装 (正确的)
- www.amazingwebsite.com:8080 => 超时(不正确)
- amazingwebsite.com => 很快就无法连接,浏览器找不到 - (不正确)
- www.amazingwebsite.com => 转至网络版 (正确的)
- facebookkiller.org:8080 => 本地安装 (正确的)
- www.facebookkiller.org:8080 => 超时(不正确)
- facebookkiller.com => 浏览器无法找到(不正确)
- www.facebookkiller.com => 转至网络版 (正确的)
因此我的 ServerAlias 不起作用,或者我的 hosts 文件有问题 - 或者两者兼而有之!
我已经花了很长时间了,真的需要一些帮助——谢谢。
答案1
虚拟主机正在运行,您没有正确编写本地 /etc/hosts。发生的情况是,您的超时然后工作是因为“www。”查找很可能会导致真正的 DNS CNAME 指针返回到非 www。版本。
127.0.0.1 localhost google.com www.google.com amazon.com www.amazon.com
这就是您使用 hosts 文件的方式 - 一次列出一个 IP,所有别名都在同一行,并且您必须列出所需的所有子域,www。例如,这将把流量发送到您的本地 Apache 实例。