这几天帮一个朋友搭wordpress,一切顺利。顺手装一个iThemes Security,啪啪啪,把几个安全选项都勾上,哦了。接着在后台准备自定义外观,忽然发现页面打不开了,报500 internal error,啥情况?但是同时,文章、多媒体、包括设置里的撰写等菜单是可以打开的,但是插件、外观和设置里的常规都500了,更严重的是,网站首页也500了……
想来想去,疑点落在伪静态方面,ftp上去,看到.htaccess从最初的几个字节已经变成14K了,备份,删掉,回去检查,都好了,猜测的没错,为了再次验证,我重新配置iThemes Security,把安全选项复位,只保留几项,然后检查,500,删掉.htaccess文件,正常。就是htaccess的问题,但问题在哪里呢?
wp是新装的,不会有问题,这个版本的iThemes Security前几天刚刚装过,也没问题,难道是主机的问题?抱着试试看的想法跟虚机的技术支持沟通,对方说主机是支持伪静态的,应该是我程序的伪静态文件规则问题,我说明情况,表示不认同,过了一会儿,对方让我再试一下,发现好了,问他做了什么操作,他说他重新调整了伪静态支持,并重启了服务。我就说嘛!算你小子才思敏捷手脚麻利,谢了!
回去喜洋洋地继续配置,把iThemes Security的安全选项一个个打开,准备收工,忽然发现,网站又500了,啥鬼?!不过这次我的直觉是疑点在iThemes Security上,于是来个简化检查,就是把.htaccess里的规则从上到下一段一段地删掉,谁走了就好了,那就是它的错!果然,最后被我分离出一部分规则,只要它们在,就500。它们的相同点是都使用了mod_authz_core.c模块,离结果不远了,我都闻到味道了。查了一下,支持mod_authz_core.c的环境需要apache2.4,我立刻用探针去看了一下那个主机的引擎版本,是Apache/2.2.15,你!
两个问题花了我不少的时间,再次让我发现,通常我们会不自觉地以为引起问题的原因只有一个,但在现实中,影响事物的因素是很多的,可能需要不断地质疑自己的结论,从不同的方面来看或许已经非常熟悉的一个事物,用某些方式进行验证,这样才会越来越接近真实。
说到这儿,推荐一本近期在读的书,阿西莫夫的《亚原子世界探秘》,发现人类对微观世界的探求,也正是依循这样的方式走过来的,猜测——实验——结论——异常的发现——再次猜测——实验——结论更正——又有异常……,真相依然不明,但求索之路,令人感佩。
最后,选主机,认大牌,不用谢!