WordPress迁移后出现404错误,核心原因是新服务器的伪静态规则未配置或数据库中的站点URL未同步更新,导致Nginx/Apache无法正确解析请求。
当你满怀期待地将网站从旧服务器搬到新环境,却发现首页还能打开,内页却集体“失踪”,这种挫败感几乎每个站长都经历过,这并非网站代码损坏,而是服务器与WordPress之间的“沟通机制”断裂了,别慌,这个问题在业内被公认为迁移中最常见的“拦路虎”,但解决起来其实有章可循,我们将通过排查服务器配置、修正数据库链接以及检查权限设置,一步步让网站恢复正常。
排查服务器伪静态规则配置
绝大多数情况下,首页正常而内页404,罪魁祸首就是伪静态(Permalink)规则缺失,WordPress依赖服务器端的重写引擎将友好的URL转换为实际的文件路径,如果这个规则在新服务器上没生效,服务器就会找不到对应的文件。
Nginx环境下的规则缺失
如果你使用的是Nginx服务器,这是重灾区,Nginx不像Apache那样有.htaccess文件自动读取,它需要明确的配置文件指令。
你需要登录服务器终端或宝塔面板等管理工具,找到网站对应的配置文件,通常位于/etc/nginx/conf.d/或/www/server/panel/vhost/nginx/目录下,打开对应你域名的.conf文件,在server块内部,location / 代码段中,必须包含以下核心代码:
location / {
try_files $uri $uri/ /index.php?$args;
}
这段代码的意思是:先尝试查找存在的文件,再查找存在的目录,如果都找不到,就将请求转发给index.php处理,这是WordPress伪静态的标准写法。
修改完成后,务必执行重载命令,让配置生效:nginx -s reload
Apache环境下的.htaccess问题
对于Apache服务器,问题通常出在.htaccess文件上,迁移过程中,这个隐藏文件可能未被完整传输,或者权限设置错误导致服务器无法读取。

检查网站根目录是否存在.htaccess文件,如果不存在,你可以手动创建一个,并写入WordPress的标准重写规则:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
确保该文件的权限设置为644,所属用户为网站运行用户,如果文件存在但依然报错,尝试暂时重命名该文件(如改为.htaccess.bak),然后在WordPress后台重新保存一次固定链接设置,系统会自动生成新的规则文件。
修正数据库中的站点地址
即使服务器配置完美,如果数据库里的“地图”还是旧的,导航依然会失灵,WordPress在数据库中存储了大量的绝对路径,迁移后如果这些路径指向旧服务器,请求就会迷路。
使用SQL命令批量替换
这是最彻底且高效的解决方案,你需要通过phpMyAdmin或命令行进入数据库,执行UPDATE语句。
注意: 在执行前,务必备份数据库!
假设你的旧域名是old.com,新域名是new.com,执行以下SQL语句:
UPDATE wp_options SET option_value = replace(option_value, 'http://www.old.com', 'http://www.new.com') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'http://www.old.com','http://www.new.com'); UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old.com', 'http://www.new.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://www.old.com','http://www.new.com');
这里涉及到了wp_options、wp_posts和wp_postmeta

三个核心表。wp_options存储站点基础URL,wp_posts存储文章内容和永久链接,wp_postmeta存储附件等元数据。
关键细节: 如果网站使用了HTTPS,请将http替换为https,如果你的表前缀不是默认的wp_,请相应修改SQL语句中的表名。
使用插件辅助迁移
如果你不擅长操作数据库,或者担心SQL语句写错,可以使用专门的迁移插件,在旧服务器上安装并激活“Duplicator”或“All-in-One WP Migration”插件。
这些插件的优势在于它们能自动处理数据库中的URL替换逻辑,在迁移到新服务器后,插件通常会提供“重定向”或“更新URL”的选项,一键即可完成数据库层面的修正,这种方法虽然稍慢,但对于非技术背景的站长来说,安全性更高,容错率更好。
检查文件权限与服务器环境兼容性
问题不出在配置和数据库,而出在基础的文件权限或PHP版本差异上。
文件权限纠错
WordPress对文件和目录的权限有严格要求,如果权限过高(如777),存在安全风险;如果过低(如600),服务器可能无法读取文件,导致加载失败。
标准的权限设置如下:
- 目录权限:
755,确保所有文件夹及其子文件夹都具备执行权限。 - 文件权限:
644,确保所有PHP、CSS、JS等文件具备读取权限。 - wp-config.php:
600或640,这是敏感配置文件,应限制其他用户的读取权限。
你可以通过FTP客户端或SSH命令批量修改权限:find /path/to/wordpress -type d -exec chmod 755 {} ;find /path/to/wordpress -type f -exec chmod 644 {} ;
PHP版本与扩展兼容性
旧服务器可能运行在PHP 7.4,而新服务器升级到了PHP 8.1或8.2,虽然WordPress官方支持最新PHP版本,但部分老旧插件或主题可能不兼容,导致内部错误进而引发404。

检查新服务器的PHP版本是否在WordPress推荐范围内,确认mod_rewrite模块(Apache)或rewrite模块(Nginx)已启用,在PHP层面,检查php.ini中的memory_limit是否足够,通常建议设置为256M,以避免因内存不足导致的静默失败。
常见疑问解答
WordPress迁移服务器显示404错误页怎么快速修复?
快速修复的核心在于“三步走”:首先检查服务器伪静态规则是否生效,Nginx需配置try_files,Apache需确保.htaccess存在且权限正确;通过SQL命令或迁移插件批量替换数据库中的旧域名URL;清除浏览器缓存和服务器缓存插件,多数情况下,完成前两步即可解决90%的404问题。
WordPress迁移后首页正常但内页404是什么原因?
这是典型的伪静态规则失效症状,首页通常由index.php直接解析,不依赖复杂的URL重写规则,而内页(如/2026/10/post-name/)需要服务器将请求重写为index.php?p=123的形式,如果服务器没有配置相应的重写规则,或者数据库中的固定链接结构与新环境不匹配,服务器就会返回404。
WordPress迁移到新服务器后访问变慢或404怎么办?
如果伴随访问变慢,除了检查伪静态和数据库URL,还需重点关注DNS解析是否已完全生效,如果DNS缓存未清除,部分用户可能仍访问旧IP,而旧IP可能已不再指向WordPress站点,检查新服务器的CDN配置,确保CDN回源地址指向了新服务器IP,否则CDN节点可能缓存了旧的404页面或错误链接。
解决WordPress迁移后的404错误,本质上是一场对服务器配置、数据库内容和文件权限的系统性体检,只要遵循从外到内、从配置到数据的排查逻辑,绝大多数站长都能独立化解这一危机,备份先行,操作谨慎,网站迁移并非洪水猛兽,而是技术进阶的必经之路。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/399984.html
