hosts文件不能直接把一个域名映射到另一个域名,它只能把域名解析到指定IP;要实现“A域名跳转到B域名”,需要让两个域名指向同一IP,再靠Web服务器重定向或反向代理完成。
很多人第一次改 hosts,都会想当然地写一行“old.example.com new.example.com”,结果保存后浏览器毫无反应,原因不复杂:hosts 是本地静态解析表,它只认识 IP,不认识“域名别名”,换句话说,hosts 能做的是“把域名指向某个 IP”,不是“把域名指向另一个域名”,想把 old.example.com 映射到 new.example.com,真正要处理的是 HTTP 层的 Host 头和跳转逻辑。
hosts文件如何把一个域名映射到另一个域名?先分清它到底能做什么
hosts 文件的历史可以追溯到早期 BSD 系统,到2026年,Windows、Linux、macOS 仍沿用这套本地解析机制,它的基本格式非常固定:
IP地址 主机名 [别名1] [别名2]
0.2.10 old.example.com new.example.com
这行的意思是:old.example.com 和 new.example.com 都解析到 192.0.2.10,它并没有建立 old 到 new 的转向关系,浏览器访问 old 时,请求仍然带着 Host: old.example.com,如果服务器不判断 Host,用户看到的还是 old 的内容。
据中国互联网络信息中心(CNNIC)公开资料,域名解析是互联网访问的基础环节,hosts 只是把这个环节的一部分搬到了本机,它的优先级通常高于公网 DNS,适合开发调试、临时切流、内网测试,不适合生产环境的全局解析。
常见 hosts 路径:
- Windows:
C:WindowsSystem32driversetchosts - Linux:
/etc/hosts - macOS:
/etc/hosts
修改时需要管理员权限,Windows 下可用管理员身份打开记事本或 VS Code,再打开 hosts 文件,Linux 和 macOS 常用:
sudo nano /etc/hosts
改完后刷新缓存:
# Windows ipconfig /flushdns # Linux systemd-resolved sudo resolvectl flush-caches # macOS sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder
验证时不要只用 nslookup。nslookup 通常走 DNS,不读 hosts,更适合用:
ping old.example.com curl -I http://old.example.com
hosts文件修改域名映射和DNS解析有什么区别
| 对比项 | hosts 文件 | 公网 DNS |
|---|---|---|
| 生效范围 | 仅本机 | 全网递归解析 |
| 优先级 | 通常高于 DNS | 依赖缓存和 TTL |
| 能否做 CNAME | 不能 | 可以 |
| 适合场景 | 本地测试、临时切换 | 正式上线、负载均衡 |
| 修改生效速度 | 本机刷新后快 | 受 TTL 和缓存影响 |
| 生产可用性 | 低 | 高 |
业内专家指出,hosts 文件属于本地静态解析,系统通常优先查询它,再查询 DNS,所以你在本机把 old 指到某台服务器,不等于全球用户都会这样访问,它只影响你这台机器。
本地测试环境怎么用hosts文件做域名跳转
假设你正在开发新站,旧域名 old.example.com 要临时跳到 new.example.com,可以这样做:
编辑 hosts,把两个域名都指向本地:
0.0.1 old.example.com new.example.com
本地启动一个 Web 服务,监听 80 端口,Nginx 配置可写成:
server {
listen 80;
server_name old.example.com;
return 301 http://new.example.com$request_uri;
}
server {
listen 80;
server_name new.example.com;
root /var/www/new;
index index.html;
}
-
刷新 DNS 缓存,再用浏览器无痕窗口访问
http://old.example.com。 -
用 curl 验证跳转:
curl -I http://old.example.com
看到 301 和 Location: http://new.example.com,说明本地跳转已经生效。
如果要用 HTTPS,本地还需要证书,否则浏览器会报证书不匹配,开发环境可以用自签名证书,但浏览器仍会提示风险,生产环境则应使用受信任的 SSL 证书。
Windows系统hosts文件域名映射到另一个域名怎么设置
Windows 用户最常遇到的问题是权限,直接双击 hosts 文件,系统可能不允许保存,正确路径是:
- 按 Win 键,搜索“记事本”。
- 右键选择“以管理员身份运行”。
- 在记事本中打开
C:WindowsSystem32driversetchosts。 - 添加一行,
0.2.10 old.example.com new.example.com
- 保存时编码选 UTF-8 无 BOM 或 ANSI。
- 执行
ipconfig /flushdns。 - 用
ping old.example.com检查解析结果。
如果保存后仍不生效,检查三件事:
- Windows Defender 的“受控文件夹访问”是否拦截。
- 安全软件是否锁定 hosts。
- 浏览器是否启用了 HSTS,强制跳转 HTTPS。
服务器端如何做真正的域名到域名跳转
只改 hosts,服务器不配置,old 不会自动变成 new,真正要让所有访问 old 的用户到 new,需要在服务器层做 301 重定向或反向代理。
Nginx 301 示例:
server {
listen 80;
server_name old.example.com;
return 301 https://new.example.com$request_uri;
}
Apache 可在 VirtualHost 中写:
Redirect 301 / https://new.example.com/
如果不想让浏览器地址栏变化,而是让 old 的内容来自 new,可以用反向代理:
server {
listen 80;
server_name old.example.com;
location / {
proxy_pass https://new.example.com;
proxy_set_header Host new.example.com;
proxy_ssl_server_name on;
}
}
行业共识认为,hosts 更适合开发调试和临时切流,不适合生产环境的全局解析,生产环境要改 DNS、配 CDN、做负载均衡,再配合服务器跳转。
hosts文件域名映射到另一个域名需要付费吗
修改 hosts 本身不收费,它只是本机文本文件,可能产生的费用在别处:
- 域名注册和续费。
- 云服务器或虚拟主机。
- SSL 证书。
- 公网 IP 和带宽。
- 北京、上海、深圳等地域的云资源价格会有差异。
如果只是本地开发,成本基本为零,如果要对公网用户生效,就需要域名、服务器和证书,花费取决于域名后缀、服务器配置和地域,hosts 修改不产生直接费用。
常见坑与排查清单
- hosts 不能写 URL,不能带
http://。 - hosts 不能指定端口,端口由访问地址决定。
- hosts 不支持通配符,不能写
.example.com。 - 一行只能以一个 IP 开头,后面可以跟多个主机名。
nslookup不读 hosts,验证要用ping或curl。- IPv6 可能优先,检查是否同时写了
:1。 - 浏览器缓存和 HSTS 会让旧跳转继续生效。
- CDN 和公网 DNS 不会读取你的 hosts。
- 公司组策略可能禁止修改 hosts。
修改 hosts 只是本地解析入口,不能替代域名跳转服务,真正要把一个域名映射到另一个域名,核心是同一 IP、Host 识别、301 重定向或反向代理。
hosts文件域名映射到另一个域名常见问答
hosts文件能把A域名直接写成B域名吗?
不能,hosts 每行必须以 IP 开头,后面才是主机名,写 old.example.com new.example.com 不会形成 CNAME,解析器无法识别,正确做法是把两个域名都指向同一 IP,再在 Web 服务器里根据 Host 做跳转。
修改hosts后,为什么跳转没有生效?
常见原因是缓存、权限、服务器未配置、HSTS、端口不对,依次检查:刷新 DNS 缓存,重启浏览器,用 curl -I -H "Host: old.example.com" http://127.0.0.1 验证服务器响应,确认 Nginx 或 Apache 是否监听 80 或 443 端口。
hosts文件域名映射到另一个域名会影响网站GEO吗?
不会直接影响线上 GEO,搜索引擎通过公网 DNS 抓取页面,不读取你本机 hosts,若服务器对搜索引擎返回错误跳转或大量 301 链,才会间接影响收录和排名。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/722010.html





