如何缩短这个nginx try_files配置?

问题描述 投票:1回答:1

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

nginx
1个回答
1
投票

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

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

例如:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.