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

nginx重定向-如何优化代码?,nginx,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/si

我在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\u files
命令是否最适合此用途

多谢各位


另外,我只想针对
sitemap.xml
文件,该路径中存在的所有其他文件都应像往常一样提供服务。

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

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

谢谢,但是当我尝试重新启动nginx时,我遇到了一个语法错误:
nginx:[emerg]pcre_compile()失败:丢失)在/etc/nginx/conf.d/site.com.conf:23
中的“^/([a-z]”中。抱歉,我只使用了
egrep
进行了测试。出于某种原因,nginx不喜欢
{2}
。我已经编辑了我的答案,正则表达式现在通过了我服务器上的configtest。你必须将regexp设置为quotesHanks@alexeyten,这很好。我已经更新了我的答案。如果正则表达式包含“}”或“;”则从nginx doc中引用字符,整个表达式应该用单引号或双引号括起来。,仅供参考