AWS EC2(Ubuntu)部署WordPress后wp-admin面板404错误求助
WordPress wp-admin 404 错误解决指南(绑定域名后)
问题背景
将AWS EC2实例IP绑定域名后,WordPress站点的wp-admin面板无法访问,返回404错误。当前站点根目录的.htaccess文件内容如下:
# Only allow direct access to specific Web-available files. # Apache 2.2 <IfModule !mod_authz_core.c> Order Deny,Allow Deny from all </IfModule> # Apache 2.4 <IfModule mod_authz_core.c> Require all denied </IfModule> # Akismet CSS and JS <FilesMatch "^(form.js|akismet.js|akismet-frontend.js|akismet.css)$"> <IfModule !mod_authz_core.c> Allow from all </IfModule> <IfModule mod_authz_core.c> Require all granted </IfModule> </FilesMatch> # Akismet images <FilesMatch "^logo-(a|full)-2x.png$"> <IfModule !mod_authz_core.c> Allow from all </IfModule> <IfModule mod_authz_core.c> Require all granted </IfModule> </FilesMatch>
使用技术栈:
- Ubuntu 系统
- Apache Web服务器
- MySQL 数据库
排查与修复步骤
1. 修复.htaccess配置(核心问题)
当前.htaccess仅包含Akismet插件的访问控制规则,缺少WordPress必需的URL重写规则,这是导致后台路径无法解析的主要原因。
操作步骤:
- 登录EC2实例,进入WordPress站点根目录(通常为
/var/www/html)。 - 备份现有
.htaccess:sudo cp .htaccess .htaccess.bak - 替换为WordPress默认重写规则:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress - 若需保留Akismet规则,将其追加到上述代码下方。
2. 启用Apache重写模块
WordPress的URL路由依赖mod_rewrite模块,未启用会导致路径无法匹配。
操作步骤:
- 启用模块:
sudo a2enmod rewrite - 重启Apache生效:
sudo systemctl restart apache2
3. 配置Apache允许.htaccess生效
Apache默认可能限制.htaccess的作用,需修改站点配置:
操作步骤:
- 打开站点配置文件(路径示例:
/etc/apache2/sites-available/your-site.conf)。 - 找到站点根目录对应的
<Directory>区块,设置AllowOverride All:<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> - 保存后重启Apache:
sudo systemctl restart apache2
4. 更新WordPress站点URL
绑定域名后,WordPress内部的站点URL可能仍指向旧IP,导致跳转错误。
方法1:通过数据库修改
- 登录MySQL:
mysql -u 数据库用户名 -p - 进入WordPress数据库:
use 你的数据库名; - 更新URL配置:
(将UPDATE wp_options SET option_value = 'https://your-domain.com' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'https://your-domain.com' WHERE option_name = 'home';your-domain.com替换为你的实际域名)
方法2:通过wp-config.php修改
在WordPress根目录的wp-config.php中添加以下代码:
define('WP_HOME','https://your-domain.com'); define('WP_SITEURL','https://your-domain.com');
5. 清除浏览器缓存
浏览器缓存的旧IP或会话可能导致访问异常,清除后重新访问https://your-domain.com/wp-admin。
内容的提问来源于stack exchange,提问作者Xman
相关产品推荐
相关产品推荐

