You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一Nginx服务器下WordPress与Django共存时固定链接404问题

解决WordPress固定链接404问题(同服务器部署Django+WordPress+Nginx)

问题根源

从Nginx错误日志看,访问/blog/test这类带slug的路径时,Nginx错误地尝试在/usr/share/nginx/html目录下查找文件,没有将请求转发给WordPress的入口文件index.php。而WordPress的非默认固定链接(如文章名格式)需要所有动态请求都由index.php处理解析,这是核心问题所在。

修正Nginx配置

针对/blog路由块做如下调整,确保所有动态请求正确转发到WordPress:

server {
    listen 443 ssl;
    server_name www.example.com;

    # Django应用主路由(保留你的原有配置,比如uwsgi/proxy转发)
    location / {
        include uwsgi_params;
        uwsgi_pass unix:/path/to/your/django.sock;
        # 若使用Gunicorn则替换为:proxy_pass http://127.0.0.1:8000;
    }

    # WordPress /blog 路由配置
    location /blog {
        # 指向WordPress安装目录的上级目录(假设WordPress在/var/www/wordpress)
        root /var/www;
        index index.php index.html index.htm;

        # 优先找静态文件,找不到则转发到index.php处理
        try_files $uri $uri/ /blog/index.php$is_args$args;

        # PHP-FPM 处理配置
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据你的PHP版本调整路径
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;

            # 拆分路径,让WordPress正确解析slug
            fastcgi_split_path_info ^(/blog)(/.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        }
    }

    # SSL 配置(保留你的证书路径)
    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/key.pem;
}

关键配置说明

  • root /var/www;:因为WordPress安装在/var/www/wordpress,location /blog对应的root设为/var/www,才能让$document_root$fastcgi_script_name指向正确的/var/www/blog/index.php。
  • try_files规则:确保静态资源直接返回,动态请求全部交给WordPress的index.php处理,同时保留URL参数。
  • fastcgi_split_path_info:拆分/blog前缀和后续的slug路径,让WordPress能正确识别并解析固定链接。

后续操作

  1. 验证并重启Nginx
    执行配置检查命令:

    nginx -t
    

    确认无错误后重启服务:

    systemctl restart nginx
    
  2. 刷新WordPress固定链接设置
    登录WordPress后台,进入「设置」→「固定链接」,选择你需要的格式(如「文章名」),点击「保存更改」。这一步会让WordPress刷新内部路由规则,无需手动修改.htaccess(Nginx不依赖该文件)。

注意事项

  • 确保WordPress安装目录的权限正确,Nginx运行用户(如www-data)拥有读取权限。
  • 检查PHP-FPM的socket路径是否与配置一致,确保PHP服务正常运行。

内容的提问来源于stack exchange,提问作者Gaurav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:51:32