趁着阿里云的99计划又买了一台服务器,本来只是拿来备份原先的服务器,想想有点浪费,还不如把几个负载比较低的系统切到新服务器上,物尽其用,还能减少老服务器的性能开支。
BookStack是第一个迁移的,基本上可以说是一帆风顺。紧接着是typecho,有点小波折,但也是立马就解决了。LimeSurvey顺带升了个级再进行迁移,也没什么问题。唯独在切换WordPress时发生错误了。
说来搞笑,我迁移这个站点依次经历了403、404和405错误。前两个还好,基本上都是因为设置和权限的问题,因为复制到新站点的时候连网站根目录都改变了,发生错误难免。
405就很尴尬,因为它表明网站是可以链接的,URL是正确的,因为我有几个静态页面打开一点问题都没有。

什么是405错误?

当你尝试访问网站并且服务器拒绝你的请求时,会出现 405 或“405 Not Allowed”错误。与其他HTTP错误不同,405代码意味着该站点的服务器已启动并正在运行,并且它可以识别你的请求。但是,它出于某种原因拒绝了该请求。

根据你使用的浏览器,你可能会看到405错误消息的变体,例如:

  • “Method Not Allowed(方法不被允许)”
  • “HTTP 405 error(HTTP 405错误)”
  • “HTTP 405 Method Not Allowed(HTTP 405方法不被允许)”

“4XX”错误代码通常是由客户端问题引起的,但偶尔也会由服务器端问题引起。由于错误代码没有为你提供很多信息,你可能需要解决多个潜在的修复问题。

排查过程

好吧,这是网上的答案。网上还提供了不同的解决办法,一一进行排查:
首先,URL肯定是不会错的,再怎么说都是我自己的网站,不可能输错,况且浏览器还自带记忆功能。
说是客户端的问题,那就用不同浏览器都试试吧,包括手机浏览器,结果都是一样,打不开。
插件或主题冲突也同样不可能,服务器迁移过程中并没有改动过任何的文件代码和数据库数据,要是存在冲突早在迁移前就暴露了。
文件和文件夹权限,这一点的可能性稍大,毕竟从一台服务器复制到另一台服务器的过程中,难免会有一些疏忽,忘了设置某些文件或文件夹的权限,不过在报403和404错误的时候我已经都解决了。
nginx的配置也是从原来服务器照搬的,即便入有些文章中提到的,在location /块中配置了if ($request_method = POST) { return 405; },但之前也从未出现过问题。
最后,大概只有缓存的可能性最大,因为尝试过不同的浏览器,而且像火狐之类的几乎很少用,浏览器缓存似乎也说不过去。而WordPress的缓存因为没法进入后台肯定是没办法清除的,要么就暂时禁用缓存插件。

总之,到最后也没搞清楚自己到底是怎么修复这个405错误的。

参考资料:
https://wpservices.com/zh-cn/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8Dwordpress%E4%B8%AD%E7%9A%84405%E6%96%B9%E6%B3%95%E4%B8%8D%E5%85%81%E8%AE%B8%E9%94%99%E8%AF%AF/

最后修改:2025 年 11 月 02 日
如果觉得我的文章对你有用,请随意赞赏