在 Nginx 上配置 WordPress 伪静态,核心是在 location / 块中使用 try_files 指令将请求转发给 index.php。以下是包含备份、完整配置上下文及子目录适配的实操方案。
先说结论:配置核心在于让 Nginx 将不存在的文件请求转发给 index.php 处理,同时需在 WordPress 后台启用固定链接。
- 适合:标准 Nginx 环境或宝塔面板 Nginx 站点
- 先准备:备份配置文件,确认 WordPress 版本及安装路径
- 验收:访问文章内页确认返回 200 状态码且无 404 错误
核心配置与备份
修改配置前务必备份,防止语法错误导致服务无法启动。
1. 备份配置文件
cp /etc/nginx/sites-available/your_site.conf /etc/nginx/sites-available/your_site.conf.bak2. 完整 Server 块配置示例
以下是包含上下文的标准配置,请根据实际域名和路径修改:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
}若使用宝塔面板,可在站点设置 - 伪静态中选择 wordpress 规则一键应用,但仍建议手动备份。
子目录安装特殊配置
若 WordPress 安装在子目录(如 /blog/),需调整 location 路径和转发目标:
location /blog/ {
try_files $uri $uri/ /blog/index.php?$args;
}注意转发路径需包含子目录名称,否则会导致 404 或无限重定向。
实操步骤
步骤 1:调整 WordPress 后台设置
登录 WordPress 后台,进入 设置 → 固定链接,选择除“朴素”以外的任意结构(建议“文章名”),点击保存更改。
步骤 2:修改 Nginx 配置文件
编辑配置文件,定位到 location /,填入上述 try_files 代码。确保 index.php 路径与实际安装路径一致。
步骤 3:测试并重载服务
执行 nginx -t 检查配置语法。若显示 successful,执行 systemctl reload nginx 使配置生效。
验证与排查
验证方法:访问任意文章内页链接,浏览器开发者工具网络状态应为 200 OK。也可使用命令验证:
curl -I https://example.com/sample-post/排查步骤:若返回 404,检查 Nginx 错误日志:
tail -f /var/log/nginx/error.log查看是否有权限错误或路径匹配问题。确保 Nginx 运行用户(如 www-data)有权限读取 WordPress 目录。
常见坑
1. 规则冲突:避免在 location / 中混用 rewrite 和 try_files,优先使用 try_files 方案。
2. 忘记重载:修改配置文件后未重载 Nginx 服务,导致旧规则依然生效。
3. 缓存干扰:若使用缓存插件,配置变更后需清除缓存再验证。
4. SSL 配置:若启用 HTTPS,确保 server 块监听 443 端口且 SSL 证书路径正确。