我有一个客户端想要一个别名目录名来自动重定向到特定的模板......
别名
http://www.host.com/thisplace
真实路径
http://www.host.com/somewhere/file.cfm?var=123&anothervar=567
有关最佳方法的任何建议吗?
答案 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重写绝对是我认为的方式。