【问题标题】:How do I create Search Engine Safe URLs in Fusebox 5.1 noxml?如何在 Fusebox 5.1 noxml 中创建搜索引擎安全 URL?
【发布时间】:2009-04-13 15:03:46
【问题描述】:

如何在 Fusebox 5.1 noxml 中创建搜索引擎安全 URL?

例如,我想要这个: http://www.site.com/index.cfm/app.welcome/

取而代之的是: http://www.site.com/index.cfm?fuseaction=app.welcome

Fusebox 5.1 应该能够做到这一点。我读过这个article,但它只适用于xml 版本。我知道的太少,我不知道从哪里开始。 fusebox的noxml版本怎么办?

更新: 看起来我需要将此添加到我的 Application.cfc 文件中。不过还是不行……

FUSEBOX_PARAMETERS.myself = "index.cfm/fuseaction/";
FUSEBOX_PARAMETERS.queryStringStart = "/";
FUSEBOX_PARAMETERS.queryStringSeparator = "/";
FUSEBOX_PARAMETERS.queryStringEqual = "/";

【问题讨论】:

    标签: coldfusion application.cfc fusebox


    【解决方案1】:

    Fusebox 5.1 允许您通过更改来使用 SES URLs ? & 到 /。您仍然需要提供自己的重写器。但是,如果您能够升级到 5.5,它应该也可以处理重写。

    示例重写器

    http://www.fusebox.org/forums/messageview.cfm?catid=31&threadid=6117&STARTPAGE=2

    <cfscript>
    // SES converter
    qrystring = ArrayNew(1);
    if ( Find("/",cgi.path_info) eq 1 and Find("/#self#",cgi.path_info) eq 0 ) {
    qrystring = cgi.path_info;
    } else if ( Len(Replace(cgi.path_info,"#self#/","")) gt 0 ) {
    qrystring = ListRest(Replace(cgi.path_info,"#self#/","#self#|"),"|");
    } else if ( FindNoCase("#self#/",cgi.script_name) gt 0 ) {
    qrystring = ListRest(Replace(cgi.script_name,"#self#/","#self#|"),"|");
    }
    arQrystring = ListToArray(cgi.path_info,'/');
    for ( q = 1 ; q lte ArrayLen(arQrystring) ; q = q + 2 ) {
    if ( q lte ArrayLen(arQrystring) - 1 and not ( arQrystring[ Q ] is myFusebox.getApplication().fuseactionVariable and arQrystring[ q+1] is self ) ) {
    attributes['#arQrystring[ Q ]#'] = arQrystring[ q+1];
    }
    }
    </cfscript>
    

    如果您选择使用 Coldcourse...

    http://coldcourse.riaforge.com

    以下内容将帮助您入门。如果您想要 /index.cfm/circuit/action/ 格式的 URL,您可以忽略服务器端重写(IIS 的 ISAPI)。但是如果你想要 /circuit/action/ 或 /blah/ 你需要把它变成服务器端。

    application.cfc

    将 onApplicationStart(或 onRequestStart 用于测试)放入内存中。

    <cfset application.coldcourse = createObject("component","components.util.coldcourse").init("/config/coldcourse.config.cfm")>
    

    index.cfm 将其放置在框架加载之前

    <cfset application.coldcourse.dispatch(cgi.path_info, cgi.script_name) />
    

    coldcourse.config.cfm(示例配置)

    <cfset setEnabled(true)>
    <cfset setFrameworkEvent("action")>
    <cfset setFrameworkSeparator(".")>
    <cfset setFrameworkActionDefault("")>
    <cfset setUniqueURLs(true)>
    <cfset setBaseURL("http://www.mysite.com/index.cfm")>
    
    <!--- CUSTOM COURSES GO HERE (they will be checked in order) --->
    <!--- for http://www.mysite.com/about/ pages --->
    <cfset addCourse("components")>
    <cfset addCourse(pattern="about",controller="main",action="about")>
    <cfset addCourse(pattern="contact",controller="main",action="contact")>
    <cfset addCourse(pattern="help",controller="main",action="help")>
    
    <!--- If nothing else matches, fall back to the standard courses (you probably shouldn't edit these) --->
    <cfset addCourse(":controller/:action/:id")>
    <cfset addCourse(":controller/:action")>
    <cfset addCourse(":controller")>
    

    安装 ISAPI 重写

    确保您使用的是正确的重写正则表达式,因为 2.0 版与 3.0 版不同。

    2.0 脚本示例:

    # Coldcourse URL Rewrite for CF
    IterationLimit 0
    RewriteRule ^(/.+/.+/.*\?.+\..*)$ /index.cfm/$1
    RewriteRule ^(/[^.]*)$ /index.cfm/$1
    

    禁用检查网络服务器上是否存在文件

    如果您的网络日志中出现 404 错误,请为 IIS 执行此操作。

    1. 打开 IIS 管理器
    2. 右键单击站点并选择属性
    3. 单击主目录选项卡
    4. 单击配置按钮 (对话框右下角)
    5. 单击 .cfm 扩展名并选择 '编辑'
    6. 左下角复选框:“检查 文件存在”

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-18
        • 2011-12-24
        • 2021-01-24
        • 2010-11-12
        • 2011-09-12
        • 2011-02-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多