WordPress网站迁移新服务器后仅加载index.php,求助解决
解决WordPress迁移后仅加载index.php的问题
别担心,这种迁移后的加载故障很常见,我帮你一步步排查定位:
1. 检查Apache的mod_rewrite模块是否启用
WordPress的页面路由和固定链接完全依赖mod_rewrite模块,如果这个模块没开启,服务器只会加载根目录的index.php,无法解析其他页面。
- 先创建一个
phpinfo.php文件,内容为:<?php phpinfo(); ?>,访问该文件后搜索「mod_rewrite」,确认是否显示已启用。 - 如果是Apache服务器,SSH登录后执行
sudo a2enmod rewrite开启模块,然后重启Apache:sudo systemctl restart apache2(Ubuntu/Debian系统)或sudo service httpd restart(CentOS系统)。
2. 修复或重建.htaccess文件
旧服务器的.htaccess可能没复制过来,或者权限不正确,导致WordPress的路由规则无法生效:
- 检查public_html目录下是否存在
.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
- 设置正确的文件权限:执行
chmod 644 .htaccess,确保服务器能正常读取该文件。
3. 验证wp-config.php的数据库连接配置
虽然你复制了数据库,但新服务器的数据库账号、密码或主机地址可能和旧服务器不一致:
- 打开
wp-config.php,检查以下常量是否与新服务器的数据库信息匹配:
define('DB_NAME', '你的数据库名'); define('DB_USER', '你的数据库用户名'); define('DB_PASSWORD', '你的数据库密码'); define('DB_HOST', 'localhost'); // 部分服务器可能是127.0.0.1或自定义地址
- 若不确定数据库信息,可通过主机商控制面板查看,或联系主机客服获取。
4. 修正WordPress站点URL配置
如果数据库中存储的站点URL与新服务器的域名不匹配,也会导致页面无法正常加载:
- 方法一:若能登录WordPress后台,进入「设置」→「固定链接」,直接点击「保存更改」(无需修改任何设置),这会自动更新路由规则和URL配置。
- 方法二:若无法登录后台,直接修改数据库:
- 用phpMyAdmin登录数据库,找到
wp_options表(前缀可能不是wp_,以旧服务器设置为准)。 - 找到
option_name为siteurl和home的两条记录,将option_value修改为你的新域名(例如http://你的新域名.com)。
- 用phpMyAdmin登录数据库,找到
- 方法三:在
wp-config.php中强制设置URL:
define('WP_HOME','http://你的新域名.com'); define('WP_SITEURL','http://你的新域名.com');
5. 检查文件与目录权限
错误的权限会导致WordPress无法读取必要文件,引发加载异常:
- 给public_html下的文件设置644权限,目录设置755权限,执行以下命令(替换为你的实际目录路径):
find /你的服务器public_html路径 -type f -exec chmod 644 {} \; find /你的服务器public_html路径 -type d -exec chmod 755 {} \;
6. 验证PHP版本兼容性
新服务器的PHP版本如果和旧服务器差异过大(比如旧服务器用PHP7.4,新服务器用PHP8.2),可能导致WordPress核心或插件出现兼容性问题:
- 用之前创建的
phpinfo.php查看当前PHP版本,对比旧服务器的版本。若差异较大,可通过主机控制面板切换到与旧服务器接近的PHP版本(WordPress 6.x以上推荐PHP8.0及以上版本)。
排查完这些步骤后,你的WordPress站点应该就能正常加载了。如果仍有问题,查看服务器错误日志(一般在/var/log/apache2/error.log或主机控制面板的日志模块),里面会有更具体的错误信息,方便进一步定位。
内容的提问来源于stack exchange,提问作者pkjboy
相关产品推荐
相关产品推荐

