带有重写子目录的 Nginx 虚拟主机

带有重写子目录的 Nginx 虚拟主机

我有一台 Debian 12 + Nginx 1.22 + PHP 8 服务器,其文件结构如下:

/home/www/
└───example
    └───mysubwebsite

“示例”对应的 nginx vhost conf 文件是:

server {

    server_name example.com;

    root /home/www/example;

    index index.html index.htm index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location /mysubwebsite {
        rewrite ^/mysubwebsite/(.*)\.html$    /mysubwebsite/index.php?hash=$1 last;
    }

}

http://example.com/mysubwebsite它运行良好,可以通过适当的重写访问 mysubwesite 。

现在我需要将服务器上的 mysubwebsite 文件夹移动到父文件夹,同时保留相同的公共 URL 和 mysubwebsite 的重写规则:

/home/www/
├───example
└───mysubwebsite

因此我通过以下方式更新了 vhost conf 文件:

server {

    server_name example.com;

    root /home/www/example;

    index index.html index.htm index.php;
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location /mysubwebsite {
        root /home/www;
        rewrite ^/mysubwebsite/(.*)\.html$    index.php?hash=$1 last;
    }

}

但是当我浏览时http://example.com/mysubwebsite,出现 404 错误,没有日志。我还尝试了重写指令的不同路径,但都没有成功。

对于这种情况,配置子目录重写的正确方法是什么?

编辑:在示例中添加了我最初没有提到的域的 PHP 处理指令,没有意识到它很重要

相关内容