![所有版本的 Windows 是否都附带主机文件,并且它们都具有 localhost 条目](https://linux22.com/image/1302298/%E6%89%80%E6%9C%89%E7%89%88%E6%9C%AC%E7%9A%84%20Windows%20%E6%98%AF%E5%90%A6%E9%83%BD%E9%99%84%E5%B8%A6%E4%B8%BB%E6%9C%BA%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%AE%83%E4%BB%AC%E9%83%BD%E5%85%B7%E6%9C%89%20localhost%20%E6%9D%A1%E7%9B%AE.png)
由于我一直在创建小型测试和开发网站,因此我正在用 php 5.3 编写一个基于 Web 的小型脚本,以简化在运行 wamp 堆栈的 Windows 上创建本地开发网站的过程,该脚本旨在创建一个 vhost 条目以及 Windows 主机文件中网站的条目,我认为我最好尽可能使其不特定于 Windows 版本。我突然想到:-
a) 我甚至不记得我的 hosts 文件中什么时候只有一个 127.0.0.1 localhost 条目,即使它在“开箱即用”时有这个条目
b) Windows 3.1 之后的所有版本是否都始终使用主机文件进行本地 DNS 查询,并且它是否始终位于 :\WINDOWS\system32\drivers\etc\hosts 中?
我知道手动在 apache conf 和主机文件中进行一些简单的编辑听起来有点懒惰,但我计划在其中添加一些额外的内容(创建 mysql/sqllite/mssql/postgre 模板数据库,能够构建 zend 框架模板等,所以它不仅仅是 vhost 和主机文件条目!我还将创建一个并行设置脚本,希望也能简化在我的 Unix vps 上的部署,但这应该更容易一些)
答案1
所有版本的 Windows 是否都附带主机文件,并且它们都具有 localhost 条目
否。从 Windows 7 开始,localhost 条目已被删除。localhost 现在在 DNS 解析器本身中解析。文件本身在那里,但开箱即用,它只是一堆注释。
也就是说,Windows 7行为就像 HOSTS 文件中有一个 localhost 条目。localhost 确实指向 127.0.0.1 和 ::1,只是方式不同。
Windows 3.1 之后的所有版本是否都始终使用主机文件进行本地 DNS 查询,并且它始终位于 :\WINDOWS\system32\drivers\etc\hosts
它一直%WINDIR%\system32\drivers\etc\hosts
适用于基于 NT 的 Windows。某些版本的 Windows(如 2000)使用 \WINNT 而不是 \Windows。正如我上面所述,Windows 7 根本不使用 HOSTS 文件来解析本地主机。
对于非 NT Windows(例如 95/98/ME),它已经是%Windir%\HOSTS
。