为什么 cflocation 去除字符而不访问 URL?

Why does cflocation strip characters and not visit the URL?

我有一个 URL 存储为:

<cfset VisitURL = 'http://www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new' />

(上面的URL字符串实际上来自于我无法控制的数据库字段)

当我要求cflocation访问上面的URL时,像这样:

<cflocation url="#EncodeForURL(VisitURL)#" addtoken="no" />

它访问 URL 作为我站点中的子文件夹。所以我最终去了 URL http://www.volumeoneexample.com/http:/www.toysexample.com/search.aspx?searchBox=christmasgifts≠Sort=high&search=new

如您所见,它从 http:// 部分删除了一个正斜杠,并将 URL 作为文件夹附加到我的站点中。我不明白为什么要这样做?

如评论中所述,您 "over encoding"。 EncodeForURL() 应该只在 URL 参数上。

由于您无法分别检索 URL 和参数,因此您 可以 将它们当作列表来处理。

<cflocation url="#ListFirst(VisitURL,"?")#?#EncodeForURL(ListRest(VisitURL,"?"))#" />

如果事情变得有点不稳定,你需要做更多的操作。