最近检查网站发现日志爬虫爬取了一些不应该的地址,于是想通过robots.txt文件来限制,经过规则的添加发现了,robots.txt文件中注释的中文在网页访问时乱码了。

乱码根源
我的 robots 文件里出现 鍚庡彴鏍稿績锛堝叧閿級 这类乱码,是文件保存编码错误:
- Windows 记事本默认保存为
GBK/GB2312,上传到 Linux 服务器后,网站 / 爬虫读取时按UTF-8解析,中文直接变成问号 / 乱码;(这个不可能,我没用Windows) - 编辑器未切换编码服务器 Nginx/Apache 未指定 robots 字符集,都会加重乱码。(我发现是真没配置)
乱码带来的隐性问题:
百度爬虫解析 robots 时,注释乱码不影响 Disallow 规则(爬虫只识别指令行,忽略注释),但规范上必须修复;极端情况下编码错乱会让整段规则失效。说白就是对搜索 引擎没影响,只是个人看不舒服。
Ubuntu怎么解决:很简单使用vim编辑一下robots.txt文件内容,再保存即可,默认Vim就是utf-8无bom格式,所以使用它保存就可以了。
然后再把Nginx配置修改一下:在http结构中添加一个: charset utf-8; 然后重新加载即可。
http {
charset utf-8;
}
其实现在很多浏览器都会自动识别并转换的,这次情况也提示了我Nginx配置不到位。