1

我正在研究 nginx 网络服务器。

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

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

位置 = /文件夹/子文件夹 {

}

位置/文件夹{

重写 ^/folder(.*) www.redirect.com 永久;

}

我错过了什么吗?

4

3 回答 3

1

好的,这是一个精炼的答案,包括我读过的一些评论以及我的一个评论,
以便能够访问我添加的子文件夹中的资产try_files,并为301重定向添加了所有其他 url 中的重定向。

location /folder/subfolder {
    try_files $uri $uri/ =404;
}

location /folder {
    return 301 $scheme://example.com;
}
于 2013-05-15T03:58:19.320 回答
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;

}
于 2013-03-29T13:55:26.903 回答
0

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

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

这些应该有效。

于 2013-03-29T13:37:37.900 回答