如何缩短这个nginx try_files配置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何缩短这个nginx try_files配置?相关的知识,希望对你有一定的参考价值。

我有一个nginx配置如下:

location / {
    index home.html index.html;
}

location ~ ^/t/(.*)/(.*)/index {
    try_files $uri $uri/ /t/$1/$2/index.html;
}

location ~ ^/t/(.*)/(.*)/(.*)/(.*)/(.*)/ {
    try_files $uri $uri/ /t/$1/$2/index.html;
}

location ~ ^/t/(.*)/(.*)/(.*)/(.*)/ {
    try_files $uri $uri/ /t/$1/$2/index.html;
}

location ~ ^/t/(.*)/(.*)/(.*)/ {
    try_files $uri $uri/ /t/$1/$2/index.html;
}

location ~ ^/t/(.*)/(.*)/ {
    try_files $uri $uri/ /t/$1/$2/index.html;
}

这有可能缩短到1或2个部分吗?谢谢!

答案

正则表达式位置块用于捕获/t/路径元素后面的前两个路径元素,并在相同的try_files语句中使用它们。

你可以通过限制捕获范围来减少贪婪(例如(.*?))或者用字符类(例如/)排除([^/]+)分隔符来实现相同的功能。

例如:

location ~ ^/t/([^/]+)/([^/]+)/ {
    try_files $uri $uri/ /t/$1/$2/index.html;
}

有关更多信息,请参阅this document

以上是关于如何缩短这个nginx try_files配置?的主要内容,如果未能解决你的问题,请参考以下文章

Nginx学习笔记05错误页面重定向

nginx process = 404 如何在try_files中回退

nginx配置选项try_files详解

Nginx - 如何在使用 try_files 时为 index.html 添加标头

Nginx配置try_files实践

nginx 指令之 try_files