位置将所有/*.xml重定向到/ *

时间:2019-06-12 11:31:12

标签: nginx nginx-location

我想将所有/filename.xml文件重定向到/ filename。

我可以这样重定向单个文件

location = /mascus-export.xml {
     rewrite .* /mascus-export redirect;
}

但我不想像单独列出每个.xml文件一样,而是要全部重定向。像这样:

location = /*.xml {
     rewrite .* /* redirect;
}

我在每种组合中都尝试过这种类型的事情

location = /(*)$.xml {
     rewrite .* /$1 redirect;
}

但似乎没有任何作用。

1 个答案:

答案 0 :(得分:0)

您正试图编写一个正则表达式 location块,该块以~而不是=开头。有关详细信息,请参见this document

例如:

location ~ \.xml$ { ... }

rewrite需要使用括号捕获部分URI。例如:

rewrite ^(.*)\.xml$ $1 redirect;

rewrite可以很好地工作,要么放在上面的location块中,要么裸露在server块中。


如果要使用正则表达式location块,则也不需要使用rewrite语句。请改用return语句。例如:

location ~ ^(.*)\.xml$ { 
    return 302 $1;
}