得到这个网址
http://localhost:8500/users.cfm?userid=John
通过从db
获取用户详细信息来加载用户的配置文件WHERE userid = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#url.userid#">
如何以这样的方式访问相同的配置文件:
他们只需输入他们想要查看的人的用户ID,而不是用户必须输入“users.cfm?userid = John”。
在CF9,IIS7上
我可能需要为解决方案安装http://www.iis.net/download/urlrewrite,请提供建议。
感谢您的帮助。
答案 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服务器处理的处理。