WordPress 网站搬家后会跳转到同服务器另外一个域名上去,这种奇怪的问题老魏还是第一次遇到。最近 @achair 找到老魏,说自己有一个旧服务器上多个 wordpress 网站搬家,其中 A 网站搬到新服务器上之后,出现“水土不服”的情况,打开网页就跳转到 B 网站上去了。因为不熟悉实际情况,老魏一时也找不到思路。只能初步猜测是网站程序或者数据库本身有问题。好在最后他终于解决了这个问题。老魏也和他要来了解决过程,记录在这里,不但给自己做个记号以后也能给大家看到。
经过 13 个小时奋战排除了 11种情况后,他终于解决了这个问题(原文:http://achair.cn/11138.html),整个情况写的比较详细,老魏看了一遍大概意思是:旧服务器网站搬家到新服务器,搬家到新服务器后,打开 A 网站域名会自动跳转到 B 网站。看了上面他的文章后,老魏通过分析整个过程也知道了应该如何解决这个问题。
他经过以下这些猜测、尝试过程:重定向、网站被黑、被挂马、站点设置错误、数据库内容问题、站点文件问题、解压缩问题、wordpress程序版本问题、wordpress程序文件替换法、wordpress默认主题等这么多种猜想和方法仍然不能正常打开。每种方法都要折腾一阵子,而网站文件容量高达 1G 这么多,5M 带宽上传下载也要半小时,所以来回折腾起来长达 13个小时,换谁都会情绪崩溃的。
而服务器运维中出现的这类问题,往往是从开始到现在一直在维护的人才知道整个服务器的详细情况,安装过什么、正在使用什么组件、插件。如果别人不登陆上去看的话,无法了解全面的情况就很难快速定位问题所在。所以说很多时候老魏帮助同学解决问题的时候,会要来服务器各种账号密码,登陆上去看具体情况,因为这些信息光靠文字或语音描述是无法全面了解的,尤其是当对方还是一个新手,对服务器运维不甚了解的时候更是这样。
最后他尝试着删除掉 /wp-content/ 目录的 object-cache.php 文件,网站就恢复正常,可以打开访问了。这时候老魏也明白问题出在哪里了。从他前面说的一台服务器中运行多个 wordpress 网站,而且 memcached 插件是后安装的情况来看,就是网站数据库前缀重复导致的这个问题。很多同学听到这里可能一头雾水,下面老魏详细解释一下原因。
wordpress 网站默认安装使用了 wp_ 这个数据库前缀,一般情况下多个网站同时在一台服务器上安装也没事儿的,互相之间不影响正常打开使用。而当你给服务器安装 memcached 缓存插件后,它的作用是把网站页面都缓存到内存中去,加快访问速度。object-cache.php 文件是 memcached 的插件,有了这个文件缓存加速才能顺利运行。当多个网站都使用相同的数据库前缀,会导致 memcached 插件分不清楚内存中这么多页面内容到底属于哪个网站了,给搞混了所以会出现本文开头遇到的情况。
相关文章:Memcached缓存和WP Super Cache缓存插件的区别及如何选择使用?
这个问题的出现和缓存插件无关,理论解释清楚了,下面说解决办法。
1、安装时预防
同一个台服务器中的不同 wordpress 网站,在安装时数据库前缀就不要相同。比如 vpsss.net 的数据库前缀是 vp_,那么第二个网站的数据库前缀也和域名相关,都不使用默认的 wp_ 前缀就行。这样就从一开始避免了这个问题的发生。
2、修改数据库前缀
如果前期已经有多个 wordpress 数据库前缀都是默认的 wp_ ,那么有手动修改和插件修改两种方法。老魏推荐使用插件修改方法比较稳妥。详情参考修改 WordPress 数据库默认表前缀 wp_ 的方法。
要提醒的是无论你用哪种方法修改,都一定要提前备份好网站文件和数据库。魏艾斯博客提醒您:数据千万条,安全第一条。网站不备份,站长两行泪。和你一起流泪的可能还有你老板。一定要提前备份!备份!备份!重要的事情说三遍,有备份才是我们敢于折腾的前提!
至于网上有说在 wp-config.php 或 object-cache.php 中添加、修改代码的办法,属于治标不治本,从长远看不太建议这么做。要想根治还得从修改相同的数据库前缀下手,才能彻底根治这个毛病。
总结本文中分享的主要内容分为两部分,第一是学习到解决运维问题的办法。如果你实在不知道问题出在哪里,那么就用排除法,一个个可能性的排除,剥丝抽茧后就能找到正确方法。第二是本文的 memcached 缓存插件使用方法。这个插件对于提高网站速度效果是最明显的,同时要注意同一个服务器安装多个 wordpress 网站时,数据库前缀不要相同,后面就能顺利使用 memcached 插件了。
暂无评论内容