我正在使用nginx webserver。Nginx重写排除文件夹
我想重定向内部文件夹1 www.site.com/folder1/所有网址,但不subfolder1 www.site.com/folder1/subfolder1
我创造了这些规则nginx的配置,但没有运气。
位置= /文件夹/子文件夹{
}
位置/文件夹{
重写^ /文件夹www.redirect.com永久(*);
}
我这么想吗?
我正在使用nginx webserver。Nginx重写排除文件夹
我想重定向内部文件夹1 www.site.com/folder1/所有网址,但不subfolder1 www.site.com/folder1/subfolder1
我创造了这些规则nginx的配置,但没有运气。
位置= /文件夹/子文件夹{
}
位置/文件夹{
重写^ /文件夹www.redirect.com永久(*);
}
我这么想吗?
你的新规则应该如下。我假定有效的文件命中是可以的(即用户知道该文件)。如果您不想要这种行为,请使用@rw块的内容替换try_files:
location /folder {
try_files $uri $uri/ @rw;
}
location @rw {
rewrite ^/folder/([^\/]*) http://www.redirect.com/ permanent;
}
这些应该可以工作。
删除“=”,因为这是“精确”匹配。所以它只匹配文件夹本身,并且对“/folder/subfolder/a_file.html”的请求将不匹配该块。您还需要在重写规则中添加$ scheme。如果您只想重定向到主页(http://www.redirect.com),则可以删除“$ 1”部分。
location /folder/subfolder {
}
location /folder {
rewrite ^/folder(.*)$ $scheme://www.redirect.com$1 permanent;
}
使用此解决方案,排除文件夹规则不起作用。它给了我404找不到 –
你在“/文件夹/子文件夹”下提供静态文件吗?你需要在里面放一个“root”指令来告诉nginx在哪里找到这个文件。请参阅http://wiki.nginx.org/HttpCoreModule#root。如果您在文件位置添加更多信息,我可以告诉您如何执行此操作。 –
好了,所以这里是一个精致的答案,包括一些我读过加上我的一个意见,
能够访问我加了try_files
的子文件夹内的资产,以及301
重定向中的所有其他加入了重定向的网址。
location /folder/subfolder {
try_files $uri $uri/ =404;
}
location /folder {
return 301 $scheme://example.com;
}
请给我更具体的例子。 我希望将www.test.gr/folder/中的所有网址重定向到其他静态网址(如主页),但www.test.gr/folder/subfolderx网址继续工作而不重定向。 –