【发布时间】:2016-12-03 06:25:09
【问题描述】:
我已经在 IIS/ColdFusion 上实现了一些 URL 重定向组合工作正常,但我无法处理一些正则表达式模式以减少不需要的重定向。
目前 IIS 仅在它在 URL 中找到模板名称时才(最多)处理单个重定向。例如IIS 重定向 URL,例如
http://example.com/index.cfm/something/pretty/?page=1
到
http://example.com/something/pretty/?page=1
例如,它只是从 URL 中删除模板名称,使其后面的所有内容保持不变。根据我的申请,上面的最终 URL 是有效的。
但此外,如果在最终 URL 中未找到尾部斜杠 (/),ColduFusion 应用程序正在处理这种情况并在末尾附加正斜杠,然后重定向到以正斜杠 (/) 结尾的 URL ) 在查询字符串之前(如果有)。它使用一些逻辑来保持 PATH_INFO 和 QUERY_STRING 完好无损。但这实际上会在以下情况下导致多次重定向。
[INIT] http://example.com/index.cfm/sport/badminton
[Redirect 1] [IIS-301] http://example.com/sport/badminton
[Redirect 2] [CF-301] http://example.com/sport/badminton/
现在我想在 IIS 中处理所有这些并在一个规则中涵盖所有情况,我无法制作(或找到)可以做到这一点的正则表达式模式。
当前的 IIS 重定向模式
^index.cfm/(.*)$
我尝试了各种方法以及最简单的方法
^index.cfm/(.*[^/])$
但它不包括带有 QUERY_STRING 的 URL。你可以认为我在制作正则表达式方面真的很天真。
更新 1: 我发现该问题的正确术语是“链式”重定向,并在 moz.com 找到了一篇文章,它处理了我上面提到的同一问题。我想它应该可以工作,虽然我正在根据服务器上的要求更改规则,但我想我应该用我为可能遇到此类问题的其他人找到的东西更新这个问题。我会尽快更新此解决方案来解决我身边的问题。
【问题讨论】:
标签: regex redirect iis url-rewriting coldfusion