10个内部重定向 - 可以提高此限制吗?

时间:2014-09-22 15:07:48

标签: apache http redirect nginx

我有一个客户端在使用CDN时遇到大约500个错误。这些错误表明内部重定向太多,我们的研究证实了这一点。客户端不想调整其内部重定向,并希望以另一种方式解决此问题。

根据我到目前为止的研究,这似乎是一个硬盘,并不是特定于任何一种类型的Web服务器,并且是为了避免无限循环。话虽如此,有没有办法提高这个限制 - 例如20而不是10?

示例:

  1. 浏览器>> 9重定向>> Origin 200页(总共9个重定向)
  2. 浏览器>> 9重定向>> Origin提供自定义404页面(+1重定向为自定义404 - 总共10个重定向)
  3. 浏览器>> CDN(自定义规则+1重定向)>> 9重定向>> Origin 200页(总共10个重定向)
  4. 浏览器>> CDN(自定义规则+1重定向)>> 9重定向>> Origin提供自定义404页面(+1重定向自定义404 - 总共11个重定向)
  5. 仅示例4给出了500错误。如果不调整重定向配置或删除CDN,有什么方法可以解决这个问题吗? (不幸的是,我无法提供有关重定向的更多信息的htaccess,我的道歉)。

2 个答案:

答案 0 :(得分:1)

不幸的是,HTTP客户端决定它愿意遵循多少重定向。您看到的限制源于最初在RFC 2068, sec 10.3中提出的建议,并在RFC 7231, sec 6.4中再次引用:

  

此规范的早期版本建议最多五个重定向[...]内容开发人员需要注意某些客户端可能会实现这样的固定限制。

可以在this answer中找到有关浏览器数量达到限制的粗略估计。大多数浏览器都允许配置此限制(例如,Firefox正在公开network.http.redirection-limit设置)。

Web服务器则是另一回事:似乎Apache在v2.0.452.1之间的MaxRedirects指令中有RewriteOptions选项。 LimitInternalRecursion设置似乎已经取代了这一点。我一直无法找到nginx的等效设置。

作为最后一点:如果你真的看到这么多内部重定向(即重定向只在重写引擎中执行而不会导致真正的HTTP重定向),这可能是一个强有力的指标来修改你的重写规则。

答案 1 :(得分:1)

您需要在客户端上留下深刻印象,您必须修复需要无数内部重定向的糟糕应用程序逻辑,而不是尝试更改地球上的每个浏览器。

**编辑**

Apache显然可以选择使用RewriteOptions MaxRedirects选项更改此服务器端,但我认为您仍会遇到浏览器问题,这些浏览器通常会建议您的用户停止重定向并挽救...有时甚至在10次重定向之前。