2013-05-14 202 views
0
单页

我有一个NGINX网络服务器和我试图重定向页面
www.example.com/newsletter

www.example.com/blog/category/newsletterNGINX重定向循环的

但重定向规则我是匹配两个位置,并导致重定向循环。如何让规则忽略/ blog/category页面,同时仍然重定向/ newsletter页面?

,我使用重定向规则是:
rewrite ^/newsletter$ https://www.example.com/blog/category/newsletter permanent;


我不是在正则表达式非常好,我甚至不知道那是什么,我需要用它来得到排除最后一页重定向循环。

+0

这不可能是唯一的问题。你能否提供整个服务器块?在我拥有它时,我会调试你的nginx配置。重写规则与某些事物相冲突,但与其本身不一致。 – 2013-05-14 15:31:15

+0

您可能需要添加一些上下文,如位置部分。在重写结束时用'永久中断'代替永久'解决问题? – 2013-05-14 15:33:02

+0

这个'rewrite'指令肯定与'/ newsleter'没有任何关系。您应该刷新可能适用的所有缓存(包括浏览器)。如果您之前测试过其他表达式,则重定向响应可能仍被缓存(因为它是永久性的)。您也可以尝试'curl -v'来检查服务器的实际响应。 – Lukas 2013-05-14 15:38:53

回答

3

我不会重写处理它,试试这个,而不是

location = /newsletter { 
    return 301 $scheme://www.example.com/blog/category/newsletter; 
} 
+0

使用位置块的作品。我想知道,为什么你更喜欢用位置块来处理它?比使用位置块之外的重写更好吗? – 2013-05-14 20:18:16

+0

点不是在定位台,它避免了重写,nginx的做一回比一重写速度更快,所以在性能方面这样做是不是运行重写引擎更好 [检查这个环节,这是非常有用的( http://wiki.nginx.org/Pitfalls#Taxing_Rewrites) – 2013-05-14 23:00:26