Coldfusion 友好的Url格式';mydomain.com/username';没有修改?

Coldfusion 友好的Url格式';mydomain.com/username';没有修改?,coldfusion,fusebox,Coldfusion,Fusebox,我想知道除了Mod Rewrite(使用fusebox框架或直接在Coldfusion中)之外,是否有更简单的方法来转换url,如下所示: 发件人: 致: 我的应用程序是一个现有的Fusebox 5.5应用程序 我只需要补充一点,上面的url不是静态的,即“salmahayek”可以是任何名称 任何帮助都将不胜感激 谢谢您可以使用“经典”方式(不确定Fusebox是否会干扰),使用404处理程序,类似这样的方式应该可以做到: 在服务器上设置404 hander,例如在.htaccess中: Er

我想知道除了Mod Rewrite(使用fusebox框架或直接在Coldfusion中)之外,是否有更简单的方法来转换url,如下所示:

发件人:

致:

我的应用程序是一个现有的Fusebox 5.5应用程序

我只需要补充一点,上面的url不是静态的,即“salmahayek”可以是任何名称

任何帮助都将不胜感激
谢谢

您可以使用“经典”方式(不确定Fusebox是否会干扰),使用404处理程序,类似这样的方式应该可以做到:

  • 在服务器上设置404 hander,例如在.htaccess中:

    ErrorDocument 404/404handler.cfm

  • 设置404handler.cfm以环绕框架,例如:


  • (未经测试,但应能正常工作)

    我不确定是否还有其他人,但我不明白为什么Mod重写会很困难,除非您使用IIS。重写规则必须是这样的:

    ^(login|register)/([^/\.]+) index.cfm?action=profile.$1&step=$2 [L]
    ^([^/\.]+)/?$ index.cfm?action=profile.view&name=$1
    

    我添加了一些额外的示例,以检查用户是否真的试图进入注册或登录页面,以及他们在该页面上执行的步骤。

    我过去确实使用了Application.cfc的onMissingTemplate()方法。您可以对传入的arguments.targetpage执行一些正则表达式,也可以在数据库中执行查找。无论哪种方式,您都可以在之后对正确的页面执行cflocation。记住也要传递任何url参数

    有一件事我从未尝试过,也经常想知道,这是否可以改为在onRequestStart()方法中处理?使用onMissingTemplate()的最大问题是,您正在执行一个全新的请求cflocation,并且无法传递表单变量。是的,我知道您可能会使用GetPageContext().Forward(strUrl)来代替,但您仍然会将整个请求生命周期用于原始请求。通过在onRequestStart()中执行此操作,可以避免这种情况


    有人想测试一下吗?

    我目前在我的一个应用程序中做过类似的事情,尽管是在PHP中:

    
    

    这非常有效,但如果不想重写,就必须忍受“index.cfm”。

    IIS将支持同样的操作。这是一个黑客攻击,但不会失败。嗨-抱歉-我想补充的是,上面的url不是静态的,即“salmahayek”可以是任何名称,因此硬编码的条目可能无法工作。厚颜无耻-根据coldfusion的评论,这只是一个示例,您可能希望用更好的检查来替换它,例如,确保它存在于数据库中等等,而不是盲目地通过profile.view操作发送任何404。
    http://www.somedomain.com/index.cfm?action=profile.view&name=salmahayek
    or
    http://localhost/someApp/index.cfm?action=profile.view&name=salmahayek
    
    <cfset variables.checksok = false> <!--- do some checks - example ---> <cfif cgi.REDIRECT_URL EQ 'salmahayek'> <cfset variables.checksok = true> </cfif> <cfif variables.checksok EQ true> <cfheader statuscode="200" statustext="OK"> <cfset url.action = "profile.view"> <cfset url.name = cgi.REDIRECT_URL> <cfinclude template="index.cfm"> </cfif>
    ^(login|register)/([^/\.]+) index.cfm?action=profile.$1&step=$2 [L]
    ^([^/\.]+)/?$ index.cfm?action=profile.view&name=$1
    
    <cfset urlArgs=listToArray(CGI.PATH_INFO, "/") />
    <cfset action=urlArgs[1] />
    <cfset name=urlArgs[2] />