nginx try_files 混淆

nginx try_files 混淆

我要进行的设置如下:我希望 nginx 在 /test 子目录中查找文件,如果不存在,则从其正常 uri 提供该文件。我认为使用 try_files 会相当简单。以下是我想出的设置:

server {
    listen       80;
    server_name  test-server;

    location / {
        root   /opt/www;
        index  index.php;
        try_files /test$uri $uri;
    }
}

这只起到了一半的作用。如果我去http://测试服务器/某物,并且有一个 /test/something 文件,它将提供 /test/something 文件。但是,如果没有 /test/something 文件,但有一个 /something 文件,它将返回 500 内部服务器错误。我最好的猜测是存在某种递归循环,但我不知道替代方案是什么。

答案1

try_files 的最后一个参数必须是保证文件。$uri 不适用于此。而是使用try_files /test$uri $uri =404;

相关内容