【问题标题】:URL Redirect in ColdFusion 8 running on IIS在 IIS 上运行的 ColdFusion 8 中的 URL 重定向
【发布时间】:2014-01-13 14:41:04
【问题描述】:

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

别名

http://www.host.com/thisplace

真实路径

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

对最好的方法有什么建议吗?

【问题讨论】:

  • Mark A Kruger 为您提供了几种实现这一目标的方法。在我看来,最好的方法绝对是 IIS Url Rewrite,所以选择吧:)
  • 你试过IIS URL Rewrite模块吗?

标签: iis redirect coldfusion coldfusion-8


【解决方案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/ 来识别模式和 /somewhere 来确定 URL var。这种方法成本最低(就 Web 服务器资源而言),但可能涉及更多的结构更改 - 即您必须更改 URL。

【讨论】:

  • 感谢您的意见。由于该站点的布局方式和涉及的模板数量,在我看来,重写选项可能需要比我能承受的更多时间,所以我可能无法实现那个。我考虑过 404 路线,但出于多种原因,我真的宁愿避免使用 404,包括您提到的那些。
  • 鉴于您正在尝试做的小麦,我不确定还有其他可行的选择。
【解决方案2】:

我更喜欢 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 重写绝对是要走的路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2017-07-29
    • 2012-01-18
    • 2013-12-15
    • 2021-06-23
    相关资源
    最近更新 更多