MAMP虚拟主机仅在无网络连接时正常工作的技术求助
解决MAMP免费版虚拟主机有网时跳“域名待售”的问题
我之前帮好几个开发者处理过一模一样的问题——这本质就是DNS解析优先级在搞怪!当你连上网时,系统会优先查询外部DNS服务器,而www.mywebsite.com刚好是个真实存在的待售域名,所以直接被解析到人家的服务器去了;断网时系统只能依赖本地hosts文件,自然就正常指向localhost了。下面是一步步的解决办法:
第一步:修正hosts文件的格式问题
你当前的hosts把多个地址挤在同一行,可能会干扰系统的解析优先级。正确的格式应该是每行对应一个映射关系,修改后的内容如下:
127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 127.0.0.1 www.mywebsite.com ::1 www.mywebsite.com
修改方法:打开终端,输入sudo nano /etc/hosts,输入你的Mac密码后编辑内容,按Ctrl+O保存,Ctrl+X退出编辑器。
第二步:确保MAMP的虚拟主机配置正确
- 打开MAMP,点击左上角
MAMP菜单→Preferences→Ports,记下你的Apache端口(默认是8888,改了就用你自己的)。 - 找到
httpd-vhosts.conf文件,路径一般是/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf,打开后确保你的虚拟主机配置是这样的(替换成你自己的网站文件夹路径):
<VirtualHost *:8888> DocumentRoot "/Users/你的用户名/Sites/mywebsite" ServerName www.mywebsite.com <Directory "/Users/你的用户名/Sites/mywebsite"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
注意:如果你的Apache端口不是8888,把
*:8888改成对应的端口号。
- 检查MAMP的主Apache配置文件
httpd.conf(路径/Applications/MAMP/conf/apache/httpd.conf),确保下面这行没有被#注释掉:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
第三步:刷新本地DNS缓存
在终端输入命令强制系统重新读取hosts文件:
sudo killall -HUP mDNSResponder
输入密码执行即可。
第四步:测试效果
重启MAMP的Apache服务(点击界面上的Stop Servers再Start Servers),连上网的情况下访问http://www.mywebsite.com:8888(端口号换成你自己的),应该就能正常指向本地文件夹了。如果不想每次输端口号,可以在MAMP的Ports设置里把Apache端口改成80(需要管理员权限),这样直接访问http://www.mywebsite.com就行。
内容的提问来源于stack exchange,提问作者Grover
相关产品推荐
相关产品推荐

