其实hosts的作用在我们seo的前中后期都有很大的作用,只不过大部分的seo可能都用不到或者是很少用到。这个取决于工作的环境和个人对技术的认知,在中大型互联网公司可能会用得比较多。 什么是hosts? 在所有的操作系统上其实都存在一个名叫hosts的无后缀名的文件,这个文件的作用其实跟我们线上的DNS(域名解析系统)的作用是一样的,就是将IP和域名进行一一映射,就像是我们做了域名解析一样,只不过是在本地做了解析,而不是全网,因此作用的访问也仅限于你修改的那台电脑。 这玩意存在的原因就是早期的互联网并没有DNS,所以就用这个玩意来代替了DNS,作用是一毛一样的。 说说这个玩意的运作流程吧,当我们在浏览器里面输入一个网址的时候,那么系统会先从hosts里面去找,如果hosts里面找到了域名对应的IP,那么就直接去访问这个IP就可以到达这个域名指定的"服务器"上拿到对应的数据了。如果本地hosts文件里面没有找到,那么才会向外网的DNS服务器上去找。 hosts在哪里,长啥样 在Unix类系统(Unix、Linux、macos)中,hosts文件存放在/etc目录下,hosts文件需要用root用户权限才能进行编辑更改。可以用vi或vim编辑器进行编辑。 在Windows系列系统中,hosts文件是存放在c:windowssystem32drivesetc目录下。可以用notepad++或vscode等文本编辑器进行编辑,但是保存的时候需要管理员权限才能进行保存。 以MacOS为例,它大概长这样的: 可以看到,红色框是系统默认的,绿色的框是我自己新增的 为什么会新增这些呢? hosts的妙用 第一个用处 如果我们踏踏实实的从零开始建站,那么肯定会有这样的问题。我们在本地通过集成环境(一般都是php的进程环境)搭建了程序,然后去做模板开发。但是在我们进行测试的时候,我们想要模拟一下线上的域名访问,以及伪静态,301跳转等。 但是一般的集成环境只有绑定localhost这个域名,这玩意跟我们的真实域名长得不一样,301跳转也不好模拟。 这个时候,我们就可以通过修改hosts的方式来达到目的,类似上图绿色框框里面那样。前面是IP地址,一般写127.0.0.1就是代表示本地电脑啦。然后空一个或多个空格之后写上域名就OK,这个域名随便写,只要你喜欢。但是要注意跟一些线上的网站区分开,除非你不想访问线上对应的真实站点。 有了域名之后,我们基本上就可以模式真实的线上域名访问的情况啦。不管是做伪静态还是301或者是m站等等都是可以轻松搞定的。 当然了,要做好伪静态这个最好是跟真实的web服务器进行一一对应,是Apache的还是Nginx的。 第二个用处 当我们本地模板写好,数据也做了测试之后,基本上就要上线了。但是这时候如果不想让搜索引擎那么快的发现我们的站点,或者是可能存在某些bug需要真机调试的。那么也可以先不进行DNS解析,只是在本地hosts进行修改,一样可以访问我们线上的站点。只是把IP改成我们服务器的IP,域名改成我们注册的域名即可。等我们都调试好了,没问题了,再到DNS服务商那里进行解析。 为了验证DNS生效,最好是把本地的hosts文件里面对应的记录给注释掉,注释的方法就是在最开始的位置(IP前面)加上井号(#)。或者是通过百度站长工具进行模拟抓取,17测(www.17ce.com)上面进行GET测试等。 第三个用处 一般的中大型互联网公司,为了满足日益增长的用户需求或者是应对搜索引擎的策略算法以及为了给产品经理和技术找点事做,经常都会对网站进行版本迭代更新。 比如:广告测试,PM设计出来新的着陆页的AB测,上线新功能(小程序、mip等),seo的需求(链接板块的调整,链接的增减,新栏目的增加, 页面元素和功能的增减等),这些操作不可能是本地做好了就会马上怼上正式站点的。 一般都会有一台线上的测试服务器,测试服务器上的数据跟真实服务器上的基本是一样的,域名和模板也是一样的,技术把需求做好之后一般都会先上传到测试服务器,然后测试部门的同事就先对新的变更做测试(兼容性测试、SQL注入、页面bug、响应速度、并发性能、功能完备性)等。测试没问题了,再通知提需求的人员进行验收。验收通过后才会正式的发布到线上真实环境。其它用户才能看到。 为了能访问测试服务器上的伪站点,测试人员和验收人员也都是通过修改hosts文件来对测试服务器上新增的需求进行测试和验收的。 对于我们seo来说日常的用途基本就以上三个。其它的比如要浏览谷歌,其实也有用这种修改hosts的方法。 总结 其实hosts的作用就是替代线上的DNS服务器,让我们可以在不需要真实的域名解析的情况下轻松快速的模拟和访问测试站点或真实站点。 文/布鲁的Python与SEO