如何缩短这个nginx try_files配置?

时间:2018-02-20 02:54:32

标签: nginx

我有一个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个部分?谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

例如:

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

有关详情,请参阅this document