nginx 不断添加尾部斜杠

nginx 不断添加尾部斜杠

我想为“静态”文件夹创建一个别名:

location ~ ^/myapp/([a-zA-Z0-9_-]+)/ {
    alias /var/lib/myapp/$1/static/;
    autoindex on;
}

但是,如果我有以下 URL:

https://mydomain/myapp/section1/page.html

我被重定向至:

https://mydomain/myapp/section1/page.html/

这会导致 404。

如果我访问:

https://mydomain/myapp/section1/

我可以正确地看到所有 html 文件的列表(因为“自动索引开启”)。

但是,如果我有这个配置:

location /myapp/ {
    alias /var/lib/myapp/;
    autoindex on;
}

nginx 不会添加尾部斜杠,因此我可以正确访问 .html 页面。此配置的问题在于 URL 中必须包含“static/”,例如:

https://mydomain/myapp/section1/static/page.html

如何让 nginx 不在上面的第一个例子中添加尾随斜杠?

答案1

alias正则表达式 locationblock 需要一个指定目标文件完整路径的值。您需要捕获语句中 URI 的其余部分location并将其附加到语句的末尾alias

例如:

location ~ ^/myapp/([a-zA-Z0-9_-]+)/(.*)$ {
    alias /var/lib/myapp/$1/static/$2;
    autoindex on;
}

这个文件了解详情。

相关内容