今天上传了一个php网站,用的是UNIX服务器。上传后测试发现有部分网页显示出问题了,是base失效了。但是很大部分的网页又是正常的,这就让人十分不理解了。
我对比了一下其它正常的网页<base href="https://www.linuxidc.com/Linux/2010-11/url" />写法和位置都是一样的,怎么可能会出错呢?难道是服务器对base有要求?但是base明明就是html标签,只可能对浏览器有要求,不可能对服务器有要求。
认真找了资料,发现如果在<html>之前有输出的话,base将不被解析了,也就是说base失效了。于问题找到了,服务器确实对base标签有影响,因为用我本地的Windows测试是正常的。原因是utf8的文档,在Windows系统下会自动识别BOM,而在Linux或UNIX下则识别不了BOM,其它结果就是,在html之前有了一个看不见的输出。解决的办法就是用dw把编码存为不包含BOM的utf8文档。