2014-01-29 43 views
4

我寫了一個簡短的CFSCRIPT編碼/解碼鏈接:找不到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)> 

但是,對於SEO目的,我通過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已在不同模板中聲明兩次。」這告訴我,例行程序是可用的,爲什麼它不被發現?

更新 噢...我的錯......我打電話之前已經包含在頁面的功能...咄。

+0

當你指的是'link_decode'或者反之亦然,你確定不是調用'link_encode'的問題嗎? –

+0

死定了...我編輯了我原來的帖子,包括編碼/解碼功能...... URL重寫後都沒有找到。 –

+0

你可以粘貼錯誤引用的行嗎? –

回答

1

問題......在你的cfml頁面上......你什麼時候調用link_decode?你什麼時候包括頭文件?我已經看到人們在它們的頭文件之上調用鏈接解碼,以獲得構建的查詢等,將數據放入頭文件中,但頭文件具有cfscript。檢查你的流量,不要在包含之前調用它。