You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置FAQ子目录重定向遇无限循环问题求助

Nginx配置FAQ子目录重定向遇无限循环问题求助

嘿,我来帮你搞定这个Nginx重定向的无限循环问题~

首先得说说为啥会出现循环:你写的这条规则 rewrite ^/faq/(.*)$ /faq/$1 redirect; 其实会匹配所有以 /faq/ 开头的请求,包括 /faq/ 本身——因为正则里的 (.*) 可以匹配空字符串。所以当用户访问 /faq/xxx 时,会被重定向到 /faq/,但重定向后的 /faq/ 又会被这条规则再次匹配,触发新一轮重定向,就陷入无限循环啦。

给你几个靠谱的解决方案,按需选用:

方案一:用更精确的正则匹配

只匹配 /faq/ 后面有实际内容的URL,避免匹配 /faq/ 本身:

rewrite ^/faq/.+$ /faq/ permanent;

这里的 .+ 表示至少有一个字符,完美避开了 /faq/ 这个主路径,不会触发循环。

方案二:用location块限定范围

用location直接匹配带子路径的请求,直接返回重定向:

location ~ ^/faq/.+ {
    return 301 /faq/;
}

这种写法比rewrite更直观,Nginx处理起来也更高效。

方案三:用if判断过滤主路径

如果需要更灵活的判断,可以用if来排除 /faq/ 本身(不过Nginx里建议尽量少用if,简单场景没问题):

if ($request_uri !~ ^/faq/$) {
    rewrite ^/faq/(.*)$ /faq/ permanent;
}

这里判断请求的URI不是 /faq/ 时才执行重定向,从根源上避免了循环。

另外提一句:建议用 permanent(301永久重定向),对搜索引擎SEO更友好;如果只是临时调整URL,可以换成 redirect(302临时重定向)。

备注:内容来源于stack exchange,提问作者Andreas Armbruster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:14:37