Nginx使用exclude重写一个文件夹

时间:2013-03-29 13:17:55

标签: nginx rewrite

我正在研究nginx webserver。

我想重定向folder1 www.site.com/folder1/中的所有网址,但不是子文件夹1 www.site.com/folder1/subfolder1

我为nginx配置创建了这些规则,但没有运气。

  

location = / folder / subfolder {

     

}

     

位置/文件夹{

     

重写^ /文件夹(。*)www.redirect.com permanent;

     

}

我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

好的,这里有一个精确的答案,包括我读过的一些评论以及我的一个评论,以便能够访问我添加try_files的子文件夹中的资源,以及{{为重定向添加了1}}所有其他网址中的重定向。

301

答案 1 :(得分:0)

您的新规则应如下所示。我假设有效的文件命中是可以的(即用户知道该文件)。如果您不想要此行为,请将try_files替换为@rw块的内容:

location /folder {
    try_files $uri $uri/ @rw;
}
location @rw {
    rewrite ^/folder/([^\/]*) http://www.redirect.com/ permanent;
}

这些应该有用。

答案 2 :(得分:0)

删除“=”,因为这是“完全”匹配。所以它只匹配文件夹本身,并且对“/folder/subfolder/a_file.html”的请求将不匹配该块。您还需要在重写规则中添加$ scheme。如果您只想重定向到主页(http://www.redirect.com),则可以删除“$ 1”部分。

location /folder/subfolder {

}

location /folder {

  rewrite ^/folder(.*)$ $scheme://www.redirect.com$1 permanent;

}