我有一个客户端在使用CDN时遇到大约500个错误。这些错误表明内部重定向太多,我们的研究证实了这一点。客户端不想调整其内部重定向,并希望以另一种方式解决此问题。
根据我到目前为止的研究,这似乎是一个硬盘,并不是特定于任何一种类型的Web服务器,并且是为了避免无限循环。话虽如此,有没有办法提高这个限制 - 例如20而不是10?
示例:
仅示例4给出了500错误。如果不调整重定向配置或删除CDN,有什么方法可以解决这个问题吗? (不幸的是,我无法提供有关重定向的更多信息的htaccess,我的道歉)。
答案 0 :(得分:1)
不幸的是,HTTP客户端决定它愿意遵循多少重定向。您看到的限制源于最初在RFC 2068, sec 10.3中提出的建议,并在RFC 7231, sec 6.4中再次引用:
此规范的早期版本建议最多五个重定向[...]内容开发人员需要注意某些客户端可能会实现这样的固定限制。
可以在this answer中找到有关浏览器数量达到限制的粗略估计。大多数浏览器都允许配置此限制(例如,Firefox正在公开network.http.redirection-limit
设置)。
Web服务器则是另一回事:似乎Apache在v2.0.45和2.1之间的MaxRedirects
指令中有RewriteOptions
选项。 LimitInternalRecursion设置似乎已经取代了这一点。我一直无法找到nginx的等效设置。
作为最后一点:如果你真的看到这么多内部重定向(即重定向只在重写引擎中执行而不会导致真正的HTTP重定向),这可能是一个强有力的指标来修改你的重写规则。
答案 1 :(得分:1)
您需要在客户端上留下深刻印象,您必须修复需要无数内部重定向的糟糕应用程序逻辑,而不是尝试更改地球上的每个浏览器。
Apache显然可以选择使用RewriteOptions MaxRedirects
选项更改此服务器端,但我认为您仍会遇到浏览器问题,这些浏览器通常会建议您的用户停止重定向并挽救...有时甚至在10次重定向之前。