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

Nginx自定义Location路径失效:多目录站点配置404故障排查

问题排查与修复方案

核心问题分析

你当前的Nginx配置存在两处关键错误,导致/projects路径访问404:

  1. 路径配置错误:你的实际目录是/var/www/projects,但配置里写的是root /var/www/html/projects,多了不必要的html层级,Nginx找不到对应文件。
  2. 指令使用错误:root指令会把location的前缀(比如/projects)拼接到指定路径后面,比如访问/projects/index.php时,Nginx会去查找/var/www/projects/projects/index.php,这显然不存在。这种场景应该用alias指令直接替换路径前缀。

另外,你的WordPress配置也存在同样的root使用错误,后续访问/blog也会出问题,需要一起修正。同时,因为你访问的是.php文件,必须配置PHP解析规则,否则即使路径正确,Nginx也无法处理PHP请求。

修正后的完整Server配置

http {
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
        listen 80;
        server_name _;

        # 处理PHP请求,转发到php-fpm
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的PHP版本调整sock路径
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        # 根路径映射
        location / {
            root /var/www;
            index index.html index.php;
        }

        # WordPress路径修正
        location /blog {
            alias /var/www/wordpress;
            index index.php;
            # 确保WordPress的静态资源也能正确访问
            try_files $uri $uri/ /blog/index.php?$args;
        }

        # Projects路径修正
        location /projects {
            alias /var/www/projects;
            index index.php;
        }
    }
}

验证步骤

  1. 检查Nginx配置语法是否正确:
nginx -t
  1. 重启Nginx生效:
systemctl restart nginx
  1. 再次访问http://{ip-address}/projects/index.php验证是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:11:07