在阿里云(如ECS服务器)上搭建的 WordPress 网站,如果 首页可以打开但内页(文章、分类、标签等页面)出现404 错误,这通常是由于 伪静态规则(URL 重写规则)未正确配置 所致。
🔧 原因分析
WordPress 使用 mod_rewrite 模块实现漂亮的固定链接(Permalinks)。如果你使用的是 Apache 或 Nginx 作为 Web 服务器,而没有正确配置 URL 重写规则,访问 /sample-post/ 这样的页面就会触发 404。
✅ 解决方案
🛠️ 方法一:检查并开启 Apache 的 .htaccess 和 mod_rewrite
如果你使用的是 Apache
-
确保启用了
mod_rewrite模块sudo a2enmod rewrite sudo systemctl restart apache2 -
修改 Apache 配置文件,允许
.htaccess生效编辑你的网站配置文件(如
/etc/apache2/sites-available/000-default.conf或对应虚拟主机配置):<Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> -
重启 Apache
sudo systemctl restart apache2 -
检查 WordPress 根目录是否存在
.htaccess文件如果没有,请手动创建一个,并设置权限为 644。内容如下:
# 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 -
重新保存固定链接设置
登录 WordPress 后台 → 设置 → 固定链接 → 不做修改直接点击“保存更改”。
🛠️ 方法二:Nginx 配置 WordPress 伪静态规则
如果你使用的是 Nginx
你需要在站点配置中添加以下重写规则:
location / {
try_files $uri $uri/ /index.php?$args;
}
完整示例配置文件片段:
server {
listen 80;
server_name yourdomain.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
然后重启 Nginx:
sudo systemctl restart nginx
✅ 其他可能原因排查
- 文件权限问题:确保 WordPress 目录和文件权限正确。
- 缓存插件或 CDN:清除浏览器缓存、CDN缓存或 WordPress 缓存插件。
- 固定链接格式:尝试切换为默认结构再切回来。
- 插件冲突:临时禁用所有插件测试是否恢复。
- 主题问题:更换为默认主题测试。
✅ 总结
| 问题 | 解决方式 |
|---|---|
| 首页能打开,内页 404 | 检查伪静态配置 |
| Apache 服务 | 开启 mod_rewrite 和 .htaccess 支持 |
| Nginx 服务 | 添加 try_files 规则 |
| 测试方法 | 清除缓存、改固定链接格式、换主题、禁用插件 |
如果你提供你使用的 Web 服务器类型(Apache/Nginx)、环境(宝塔面板?LNMP?),我可以给出更具体的配置代码。
需要我帮你生成对应服务器的完整配置吗?
CLOUD技术博