我在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
个文件,该路径中存在的所有其他文件应该照常提供。
答案 0 :(得分:1)
您可以尝试使用对路径语言元素的反向引用:
location ~ "^/([a-z]{2}-[a-z]{2})/sitemap.xml$" {
try_files $uri /sitemaps/$1/sitemap.xml;
}