【发布时间】:2013-05-08 23:19:24
【问题描述】:
我有一个 NGINX 网络服务器,我正在尝试重定向页面
www.example.com/newsletter
到
www.example.com/blog/category/newsletter
但我的重定向规则匹配两个位置并导致重定向循环。如何让规则忽略 /blog/category 页面,同时仍重定向 /newsletter 页面?
我使用的重定向规则是:rewrite ^/newsletter$ https://www.example.com/blog/category/newsletter permanent;
我不太擅长正则表达式,我什至不确定我需要使用什么来将最终页面排除在重定向循环之外。
【问题讨论】:
-
这不可能是唯一的问题。你能提供整个服务器块吗?我会在我拥有它的那一刻调试你的 nginx 配置。重写规则与某些东西发生冲突,但不只是与它本身发生冲突。
-
您可能需要添加一些上下文,例如位置部分。在重写结束时将
permanent替换为permanent break是否可以解决问题? -
这个
rewrite指令肯定只匹配/newsleter。您应该刷新所有可能适用于此处的缓存(包括您的浏览器)。如果您之前测试过其他表达式,重定向响应可能仍会被缓存(因为它是permanent)。您也可以尝试curl -v来检查服务器的实际响应。 -
我确实清除了缓存,由于某种原因它与两者中的 /newsletter 匹配并导致重定向循环。使用下面的位置块解决方案解决了这个问题。