nginx重定向 - 如何优化我的代码?

时间:2014-04-16 12:12:13

标签: nginx

我在nginx中有以下配置(可行):

location /de-de/sitemap.xml {
    try_files $uri /sitemaps/de-de/sitemap.xml;
}

location /en-ae/sitemap.xml {
    try_files $uri /sitemaps/en-ae/sitemap.xml;
}

location /en-de/sitemap.xml {
    try_files $uri /sitemaps/en-de/sitemap.xml;
}

location /en-gb/sitemap.xml {
    try_files $uri /sitemaps/en-gb/sitemap.xml;
}

location /en-us/sitemap.xml {
    try_files $uri /sitemaps/en-us/sitemap.xml;
}

这是因为来自外部的请求会查找(比方说)/en-gb/sitemap.xml,但该网站地图的实际文件实际上存在于/sitemaps/en-gb/sitemap.xml中。

现在,就像我之前说过的,这有效,但我不禁认为它可以被优化(即使用某种匹配规则,而不是单独列出每个商店代码??)但我已经没有太多运气让它发挥作用。

另外,我不确定try_files命令是否最适合此目的。

谢谢。

PS,它只是我要定位的sitemap.xml个文件,该路径中存在的所有其他文件应该照常提供。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用对路径语言元素的反向引用:

location ~ "^/([a-z]{2}-[a-z]{2})/sitemap.xml$" {
    try_files $uri /sitemaps/$1/sitemap.xml;
}