我有一个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个部分?谢谢!
答案 0 :(得分:1)
正则表达式位置块用于捕获/t/
路径元素后面的前两个路径元素,并在相同的try_files
语句中使用它们。
您可以通过限制捕获范围使其不那么贪婪(例如(.*?)
)或者通过使用字符类(例如/
)排除([^/]+)
分隔符来实现相同的功能
例如:
location ~ ^/t/([^/]+)/([^/]+)/ {
try_files $uri $uri/ /t/$1/$2/index.html;
}
有关详情,请参阅this document。