WordPress迁移EC2后内部页面404及数据库连接故障求助
排查WordPress迁移EC2后内部页面404及数据库连接问题
我来帮你梳理下几个容易遗漏的关键点,结合你描述的情况,应该是这几个地方没处理到位:
检查虚拟主机配置的AllowOverride设置
你提到修改了/etc/apache2/apache2.conf,但很多时候全局配置会被站点的虚拟主机配置覆盖。你需要找到你的站点配置文件(通常在/etc/apache2/sites-available/somesitename.conf),确保其中的<Directory /var/www/somesitename>块里设置了AllowOverride All,而不是默认的None。这个设置是让WordPress的.htaccess重写规则生效的核心。修改完成后重启Apache:sudo systemctl restart apache2确认.htaccess文件的权限与内容
迁移过程中.htaccess可能没同步,或者权限不对导致重写规则无法生效:- 先检查
/var/www/somesitename目录下是否存在.htaccess,如果没有,登录WordPress后台重新保存固定链接设置(Settings > Permalinks),系统会自动生成符合当前规则的.htaccess。 - 调整文件权限,确保Apache运行用户
www-data能读取它:sudo chown www-data:www-data /var/www/somesitename/.htaccess sudo chmod 644 /var/www/somesitename/.htaccess
- 先检查
排查数据库连接错误的根源
添加apache2.conf配置后出现数据库连接失败,大概率是权限或配置不一致导致的:- 检查
wp-config.php的权限,确保www-data有读取权限:
正常权限应该是ls -l /var/www/somesitename/wp-config.php-rw-r--r--(644),如果不是就调整:sudo chmod 644 /var/www/somesitename/wp-config.php - 确认
wp-config.php里的数据库参数(DB_NAME、DB_USER、DB_PASSWORD、DB_HOST)和EC2上的MySQL完全匹配。如果DB_HOST设为localhost不行,可以尝试换成127.0.0.1试试。 - 验证MySQL用户权限:登录MySQL,检查你配置的数据库用户是否有访问对应数据库的权限:
然后执行:mysql -u your_db_user -p
如果权限不足,执行授权命令:SHOW GRANTS FOR 'your_db_user'@'localhost';GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_db_user'@'localhost' IDENTIFIED BY 'your_db_password'; FLUSH PRIVILEGES;
- 检查
确认站点URL的一致性
迁移后WordPress的站点URL可能还是本地环境的,导致内部链接跳转异常:
你可以直接在wp-config.php里强制设置站点URL:define('WP_HOME','http://你的EC2公网IP或域名'); define('WP_SITEURL','http://你的EC2公网IP或域名');或者通过MySQL修改
wp_options表(注意替换你的表前缀,如果不是默认的wp_):UPDATE wp_options SET option_value = 'http://你的EC2公网IP或域名' WHERE option_name = 'siteurl' OR option_name = 'home';再次确认rewrite模块的生效状态
虽然你说已经启用rewrite模块,但再执行一次命令确保没有遗漏:sudo a2enmod rewrite sudo systemctl restart apache2
内容的提问来源于stack exchange,提问作者electrophile
相关产品推荐
相关产品推荐

