修改WordPress主题导致整个站点404无法访问

今天下午发现自己用WordPress搭建的站点主题有一些bug,决定对其进行一些修改。

由于主题原先并不是自己设计的,是在知更鸟的Ality主题基础上修改的,所以对于里面的每个文件之前并没有做过很多深入研究。

改了一下午,在本地用USBWebServer实现的站点中进行调试通过,然后用FTP客户端上传到站点,直接替换现有主题。替换完了刷新页面竟然无法访问了,浏览器中显示404错误。

遇到这个错误,第一反应是网络的问题,因为是国外服务器,偶尔出现404感觉也正常。刷新了几次还是404,打开百度正常,说明能上网,之前也没出现过这种404错误。打开cmd输入ping paincker.com发现可以ping通,另外FTP也可以连接上,看来很可能不是网络的问题了。

然后用手机Chrome浏览器试了一下,发现也打不开,提示无法识别内容。这次排除了电脑的问题。

于是问题很可能就出在主题上了,因为刚刚改动的主题。首页打不开,可能是首页的一些程序代码有错,然后就输入了其他页面的地址,也都打不开。直接输入网站后台的地址,竟然也打不开,显示的错误也是一样。一般情况下,如果主题出错,至少不至于影响后台,毕竟后台界面都是WordPress自带的,不需要过多的依赖主题。

没办法,这时只能通过FTP来解决问题了。把当前用的主题文件夹改名了,再把另一个主题改成当前主题的文件夹名,结果一刷新竟然就可以访问了。

由于主题在本地调试一切正常,按理说主题应该不会有问题的,可能是FTP传输出错。就把主题文件全部重新传了一遍,还特地对比了一下文件大小。在网站后台的主题设置界面,点击预览主题,发现其他的主题都可以预览,但是一点开今天修改的主题,整个页面就什么都没有。

在网上找了一圈,WordPress 主题 404,但是找到的结果都说的是WordPress主题中添加404页面,没有找到我需要的结果。

由于所有的页面都打不开,所以猜测可能出题处在一些公共的文件中,例如header.php,footer.php中。因为有修改之前能用的版本,所以从网上找了个文件夹内容对比软件Beyond Compare,对文件夹进行对比,由于主题中文件很多,发现一下午很多文件都被改过,一下子也不好检查是哪些文件的问题。

决定通过文件直接替换的方式找到错误所在。打开WordPress的调试模式(wp-config.php中修改define(‘WP_DEBUG’, true)),设置成修改前可用的主题版本。每次上传若干主题文件的新版本,覆盖旧版本,刷新页面可访问,则初步排除这些文件。最后错误文件定位到了一个子文件夹中的十个文件(也就是这十个新版本文件覆盖进去,网站就打不开了)。再把旧版本文件一个一个替换新版的文件,终于有个文件被替换成旧版本后又能访问了,于是找到了问题文件。

对比了一下这个文件的两个版本,只有很短的几行,唯一的区别是编码不一样。原先的文件是ANSI编码,我用SublimeText打开时发现显示的是乱码(Sublime默认使用UTF-8编码显示),就用Notepad++将其转换成了UTF-8编码保存,在Sublime中打开就没有乱码了。本来没在意这个,觉得编码应该没啥问题,何况其他的文件也是UTF8编码。

这次具体的看了一下,发现其他的文件在Notepad++中显示的全部都是UTF-8无BOM格式,而这个文件被我转换的是UTF-8格式。修改了编码格式,再上传,竟然就一切正常了。

其实至今也不是很明白是什么原因,在本地使用都很正常,到了远程服务器上就不能用了,可能是服务器配置的原因吧。于是记录下来,没准有人也会遇到这个问题,可以作为参考。