打开和关闭 <cflocation> 重定向?

Turn <cflocation> redirects ON and OFF?

我有一个带有 200 多个 <cflocation> 标签的遗留 ColdFusion 系统,并且希望能够从我的 Application.cfm.

中轻松地将它们全部关闭以进行测试

除了必须向每个文件添加条件语句之外,执行此操作的最佳方法是什么?

扩展 <cflocation> 标签以首先检查 true/false 标志的想法浮现在我的脑海,但我以前从未做过任何先进的事情,也不知道从哪里开始。

您不能在 CF 中 extend/inherit 本机标签。您可以使用 a custom tag,然后搜索替换所有出现的 <cflocation(本机)与 <cf_location(自定义),其中包含您的重定向标志。

Application.cfm

<cfset APPLICATION.allowRedirects = false>

location.cfm(原生包装 cflocation

<!--- if the variable doesn't exist for some reason, process the regular cflocation --->
<cfif (
    (not isDefined("APPLICATION.allowRedirects")) or
    (isBoolean(APPLICATION.allowRedirects) and APPLICATION.allowRedirects)
)>
    <cflocation attributeCollection="#ATTRIBUTES#">
    <!--- cflocation ends the request automatically --->
</cfif>

<!--- print debug info --->
<cfif structKeyExists(ATTRIBUTES, "url")>
    <cfoutput>Attempted to redirect to: #encodeForHtml(ATTRIBUTES["url"])#</cfoutput>
</cfif>

<!--- abort the request without redirecting --->
<cfabort>

另一种方法是 <cfmodule>。搜索 - 用 <cfmodule template="/mytags/location.cfm" 替换所有出现的 <cflocation。这里的优势:您不需要通过 customTagPaths 注册 location.cfm,因为 cfmodule 通过模板路径工作。


更简单:只需一次性搜索替换所有 <cflocation> 标签并将它们包装在条件中。您无需手动查看 200 个文件。

(这是针对 Sublime Text 的,但任何合适的编辑器都可以为您完成。)
查找(<cflocation[^>]+>)(启用正则表达式!)
替换<cfif APPLICATION.allowRedirects></cfif>
</code>是反向引用,有些编辑器用<code>代替)