1

我要托管的主机不支持服务器端 url 重写,因此无法安装第三方工具来重写 url。

这是 Windows 上的 Coldfusion 8,IIS。

我知道的另一种选择是使用框架,但我不想走那条路(时间),因为应用程序运行良好(但 URL)。

纯 CF 可以生成干净的 url 吗?我不需要 seo 的干净 url,而是让用户轻松参考他们的页面。例如 youtube.com/userpage

有什么建议吗?

如果唯一的选择是使用框架,那么哪个与传统的cfml''、cfm's & CFC's最兼容?在从无框架应用程序转换为框架化的过程中,需要对代码进行最少的更改。

感谢您的贡献!

4

4 回答 4

3

您可以使用 Framework/1 框架或 CFWheels 来实现干净的 URL,但它需要在 URL 的开头包含“/index.cfm/”以触发 ColdFusion 的应用程序处理程序代码。

编辑:请参阅 Aaron Greenlee 的解决方法,以防止“index.cfm”出现在 URL 中。

即无论您采用哪种方法,如果您无法添加第三方工具来重写 URL(并且不使用 Apache),您的 URL 将采用http://site.com/index.cfm/section/item的形式

例如。 http://site.com/index.cfm/user/login http://site.cfm/index.cfm/user/signup

FW/1 还提供了以搜索引擎友好格式传递 URL 变量的选项

例子:

http://site.com/index.cfm/user/login/email/me@you.com/password/test与http://site.com/index.cfm/user/login?email=me 相同 @you.com&password=test与http://site.com/index.cfm?action=user.login&email=me@you.com&password=test 相同

于 2010-08-02T02:32:36.620 回答
3

不,您不需要框架或 URL 重写器来使http://domain.com/some/url工作(注意没有 index.cfm)。

在 IIS 中,您可以为 404 错误设置自定义错误页面。使自定义错误页面在您的服务器上执行 ColdFusion 页面(例如 /urlhandler.cfm、404.cfm 或 index.cfm)。在该页面中,您可以通过对 cgi.query_string 值使用列表方法来使用 ColdFusion 控制您自己的路由。IIS 将为您提供一个类似于 404 的 url;http://domain.com/the/original/url您可以解析它以将访问者路由到您想要的事件。

<!--- Get URL String --->
<cfset CurrentURL = ListGetAt(cgi.query_string, 2, ";")>
<cfset CurrentURL = Replace(CurrentURL, ":80", "")>
<cfset CurrentURL = Replace(CurrentURL, ":443", "")>
<cfset CurrentURL = Replace(CurrentURL, "403;", "")>
<cfset CurrentURL = Replace(CurrentURL, "'", "", "ALL")>

我们有一个每月接收大约 100 万访问者的网站,该网站仍在使用这种方法运行 SES 网址。当我被聘用并在网站的核心发现这个现有的代码并且不会选择重复它时,我感到很震惊,但是,如果你在安装重写器或第三方框架方面有限制(这个客户对网站施加了限制)这个解决方案可能对您有用。

通过使用上述代码,您可以快速了解如何使用 CF 动态包含所需的 .CFM 文件或根据您的设置执行正确的 CFC 代码。

于 2010-08-02T13:11:58.757 回答
1

继续学习一个框架。大多数人都会为此工作。但是,如果您只是不想学习框架。

www.mysite.com/products/ 将运行:www.mysite.com/products/index.cfm

www.mysite.com/products/books 将运行:www.mysite.com/products/books/index.cfm

Framework/1 和 CFZen 可以解决这个问题,因为它们是非常简单的 1 文件框架,您可以轻松解决。

CFZen http://cfzen.riaforge.org http://cftipsplus.com/blog/?tag=cfzen

Framework/1 http://fw1.riaforge.org http://corfield.org - Framework/1 的作者

于 2010-08-02T11:27:04.127 回答
0

代替使用http://yoursite.com/index.cfm/user,您可以执行http://yoursite.com/user.cfmOnMissingTemplateapplication.cfc. 这不需要您设置自定义 404 页面。

于 2010-08-02T23:16:37.913 回答