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

如何正确配置Nginx 301重定向解决循环重定向问题?

解决Nginx 301重定向循环问题

你的问题根源在于重定向后的URL依然会被当前location规则匹配,导致无限循环叠加article路径。原配置中location /blog/(.*)$会匹配所有以/blog/开头的URL,包括重定向后的/blog/article/some-article,所以每次跳转都会再次执行rewrite,最终生成一堆重复的article。

正确配置方案(推荐)

使用正则location排除已经包含/article/的路径,彻底避免循环:

location ~ ^/blog/(?!article/) {
    rewrite ^/blog/(.*)$ /blog/article/$1 permanent;
}
  • ^/blog/(?!article/):正则断言,仅匹配以/blog/开头,但后续不是article/的路径
  • permanent:代表301永久重定向,比原配置的redirect(临时302)更适配SEO场景
  • 注意重定向目标要写完整的/blog/article/$1,原配置里^/blog/article$1缺少分隔符/,这也是路径异常的诱因之一

备选方案(用if条件过滤)

如果不想修改location规则,也可以在原location内添加判断条件,跳过已包含article的路径:

location /blog/ {
    if ($request_uri !~ /article/) {
        rewrite ^/blog/(.*)$ /blog/article/$1 permanent;
    }
}

不过Nginx官方不推荐在location内滥用if指令,因此优先选择第一种正则location方案。

内容的提问来源于stack exchange,提问作者ViktorasssIT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:12:45