host文件仅负责域名解析映射,不运行代码或启动服务;真正驱动网站的是apache/nginx+php环境,host只是引导浏览器访问的第一道桥梁。

PHP源码搭站时,Host文件本身不运行代码、不启动服务,它只干一件事:把某个域名“悄悄”指向你电脑的IP地址。真正让网站跑起来的是Apache(或Nginx)+ PHP环境,而Host是让浏览器知道“该去哪找这个域名”的第一道桥梁。
Host文件在哪?怎么安全编辑?
Windows路径是:C:\Windows\System32\drivers\etc\hosts;macOS/Linux在/etc/hosts。它受系统保护,普通方式保存必失败——必须用管理员权限打开编辑器:
- 记事本:右键 → “以管理员身份运行”,再通过“文件 → 打开”选中hosts文件
- VS Code / Notepad++:右键图标 → “以管理员身份运行”,再拖入或打开hosts
- 保存时注意编码为UTF-8无BOM,文件类型选“所有文件”,别存成.txt
Host写法规范与常见错误
每行格式严格为:IP地址 + 空格 + 域名,不加http://,不加斜杠,不带引号。例如:
✅ 正确:
127.0.0.1 myapp.local
192.168.1.105 dev.project
127.0.0.1 api.test www.api.test
❌ 典型错误:
127.0.0.1 http://myapp.local(多了协议)
127.0.0.1 myapp.local/(结尾斜杠)
#127.0.0.1 myapp.local(整行被注释)
127.0.0.1 myapp.local(全角空格或制表符异常)
改完Host为什么还不生效?
Host修改后不会立刻起作用,本地DNS缓存会继续用旧记录:
- Windows:命令提示符执行 ipconfig /flushdns
- macOS:终端执行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
- Linux(systemd-resolved):执行 sudo systemd-resolve --flush-caches
- 浏览器也缓存DNS,可尝试无痕窗口或清空浏览器DNS缓存
Host和虚拟主机必须配对才有效
只改Host,没配Apache虚拟主机,访问域名只会看到Apache默认页或404:
- 确保Apache已启用虚拟主机支持:httpd.conf中 Include conf/extra/httpd-vhosts.conf 这行未被注释
- 在httpd-vhosts.conf里添加对应配置,ServerName必须和hosts里写的域名完全一致(区分大小写、有无www、.local/.test都算不同)
- DocumentRoot务必指向项目public/目录(如Laravel、ThinkPHP),而非整个项目根目录,避免泄露.env等敏感文件
- 改完配置后,一定要重启Apache服务
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











