冷凝的SES网址 - 没有MVC

时间:2011-03-08 14:55:06

标签: iis url coldfusion url-rewriting

得到这个网址

http://localhost:8500/users.cfm?userid=John

通过从db

获取用户详细信息来加载用户的配置文件
WHERE userid = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#url.userid#">

如何以这样的方式访问相同的配置文件:

http://localhost:8500/John

他们只需输入他们想要查看的人的用户ID,而不是用户必须输入“users.cfm?userid = John”。

在CF9,IIS7上

我可能需要为解决方案安装http://www.iis.net/download/urlrewrite,请提供建议。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

使用URLRewrite,让重写器将请求的URL(例如/John)设置为请求标头,并将其转发到单个.cfm文件(即front controller)。在.cfm文件(例如frontcontroller.cfm)中读出请求标题(即GetHttpRequestData().headers)并相应地处理 - &gt; users.cfm?userid=john

答案 1 :(得分:1)

副手,也许你可以在Application.cfc中使用OnRequest方法。该方法允许您过滤请求并为其提供特殊处理。

http://www.bennadel.com/blog/805-ColdFusion-Application-cfc-OnRequest-Creates-A-Component-Mixin.htm

在您的示例中,您可以使用&#34; John&#34;或任何字符串(如果它存在于根目录中)和

<cfinclude template="#application.baseHREF#/users.cfm?userid=#userID#" />

如果在OnApplicationStart中定义baseHREF。

答案 2 :(得分:1)

如果您决定使用ISAPI Rewrite(非免费)之类的工具,它允许您编写类似于Apache中使用的重写规则,那么您需要添加:

RewriteRule ^(.*)$ /users.cfm?userid=$1 [NC,L,QSA]

您还可以使用以下内容向此规则中的排除添加文件夹或其他网址:

RewriteCond %{REQUEST_URI} !^(assets|images|xml|tasks) [NC]
RewriteRule ^_admin/(.*)$ /_admin/index.cfm/$1 [NC,L,QSA]

我建议使用重写规则而不是用CFML处理它来减少CF服务器处理的处理。