找不到CFSCRIPT例程

时间:2014-01-29 22:23:49

标签: coldfusion coldfusion-9

我写了一个简短的CFscript来编码/解码链接:

    function link_encode(str) {
    x = Replace(str, "&", "and", "ALL");
    y = Replace(x, " ", "_", "ALL");
    z = Replace(y, "/", "|", "ALL");
    return z;
}

function link_decode(str) {
    x = Replace(str, "and", "&", "ALL");
    y = Replace(x, "_", " ", "ALL");
    z = Replace(y, "|", "/", "ALL");
    return z;
}

这是一个包含在网站标题中的文件(包含在每个页面上)

<cfinclude template="/includes/cfScriptFunctions.cfm">

这在“普通”页面中正常工作:

<cfset link = link_encode(sub_menu.name)>

但是,出于搜索引擎优化的目的,我通过web.config重写URL:

<rule name="categories_1" stopProcessing="true">
<match url="category1/(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/category1.cfm?id={R:1}" />
</rule>

当我登陆此页面时,Coldfusion会返回错误:“变量LINK_DECODE未定义”。但是,如果我尝试在页面中包含cfscript文件,Coldfusion将返回错误:“例程不能多次声明。例程link_decode已在不同模板中声明两次。”这告诉我例程可用,为什么不找到它?

更新 Ooops ...我的错...我在之前调用函数它已被包含在页面中...... Duh。

1 个答案:

答案 0 :(得分:1)

问题...在您的cfml页面上...您何时调用link_decode?你什么时候包括头文件?我已经看到有人在其标题上方调用链接解码,以获取构建的查询等,将数据放入标题,但标题包含cfscript。检查您的流量,如果您在包含之前调用它。