Nginx正则重定向:如何排除根路径及特定路径避免被重定向
解决Nginx根路径被误重定向的问题
你只需要在原有的否定前瞻规则里加上$,让根路径/也被排除在外,修改后的配置如下:
location ~ ^/(?!(blog|w|images|reset_password|$)) { rewrite ^/(.*)$ https://example.com/w/$1 redirect; }
原理说明
原来的正则^/(?!(blog|w|images|reset_password))会匹配所有以/开头的路径,包括根路径/(因为/后面没有字符,否定前瞻的条件也满足)。加上|$之后,相当于告诉Nginx:如果路径是根路径(/直接结束),或者路径开头是blog/w/images/reset_password,就不触发这个location的重定向规则。
这样一来,根路径/会跳过这个重定向逻辑,正常访问;其他不在排除列表里的路径(比如/foo、/bar/baz)才会被重定向到/w/xxx。
内容的提问来源于stack exchange,提问作者Raman Saini
相关产品推荐
相关产品推荐

