1

如何在 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 应该能够做到这一点。我读过这篇文章,但它只适用于 xml 版本。我知道的太少,我不知道从哪里开始。如何使用 noxml 版本的 fusebox?

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

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

2 回答 2

1

riaforge是你的朋友:

http://coldcourse.riaforge.org/

于 2009-04-13T17:36:05.043 回答
1

Fusebox 5.1 允许您通过更改 ? & 到 /。您仍然需要提供自己的重写器。但是,如果您能够升级到 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/,则需要将其设置为服务器端。

应用程序.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

禁用检查文件是否存在于 Web 服务器上

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

  1. 打开 IIS 管理器
  2. 右键单击站点并选择属性
  3. 单击主目录选项卡
  4. 单击配置按钮(对话框右下方)
  5. 单击 .cfm 扩展名并选择“编辑”
  6. 左下方复选框:“检查文件是否存在”
于 2009-04-16T00:48:44.410 回答