在IIS上运行的ColdFusion 8中的URL重定向

时间:2014-01-13 14:41:05

标签: iis redirect coldfusion coldfusion-8

我有一个客户端想要一个别名目录名来自动重定向到特定的模板......

别名

http://www.host.com/thisplace

真实路径

http://www.host.com/somewhere/file.cfm?var=123&anothervar=567

有关最佳方法的任何建议吗?

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。一种方法是将404处理程序设置为cfm页面,然后将代码添加到cfm页面以梳理出您要查找的文件名或其他变量。这可行,甚至运作良好 - 但有一些成本与之相关。这是一个在IIS中显示该方法的链接:

http://mkruger.cfwebtools.com/index.cfm?mode=entry&entry=8F4658E4-0763-5FB7-67D23B839AB74005

我们在提供HTML 5"宣传册"的网站上成功使用此方法。用于营销。我们的管理员允许添加各种关键字,然后example.com/keyword触发404处理程序 - 它会查找关键字并提供正确的宣传册。所以你可以做example.com/eatAtJoes - 并且将提供Joe的咖啡馆宣传册。它非常灵活,不需要太多的关心和规划。关键字必须是唯一的,并且不能反映根目录下的任何实际文件夹 - 这就是它。但它确实意味着为每个潜在的关键字触发404错误 - 这并不总是最佳的。

另一种方法是使用URLRewrite - 但这可能涉及在你的url模式中添加一些内容,如/ go / somewhere - 然后使用/ go /来识别模式和/某处确定URL var。这种方法成本最低(就Web服务器资源而言),但可能涉及更多结构更改 - 即您必须更改URL。

答案 1 :(得分:0)

我更喜欢像Mart A Kruger描述的URL重写解决方案,但如果您正在寻找快速解决方案:将以下内容添加到Application.cfc中的onRequestStart方法:

<cffunction name="onRequestStart" returnType="boolean" output="true">

    <cfset sRedirects = structNew()/>
    <cfset sRedirects["/thisplace"] = "/somewhere/file.cfm?var=123&anothervar=567"/>
    <cfset sRedirects["/otherplace"] = "/somewhere_else/file.cfm?var=456&anothervar=abc"/>

    <cfif structKeyExists(sRedirects,CGI.PATH_INFO)>
        <cflocation url="#sRedirects[CGI.PATH_INFO]#" statuscode="301"/>
    </cfif>

</cffunction>

同样,它的快速修复和URL重写绝对是我认为的方式。