你如何获得给定页面的重写CFWheels URL?

Mic*_*cah 2 coldfusion cfwheels coldfusion-9

CFWheels具有URLFor()函数,用于根据提供的参数获取内部URL.有没有办法获得内部URL而不提供任何参数?

例如:如果用户导航到"http://somedomain.com"或"http://somedomain.com/about/"或"http://somedomain.com/contact/",则会出现类似ReWrittenURL的方法( )返回类似"/"或"/ about /"或"/ contact /"的内容?

使用不带参数的URLFor()会返回"/ home/index"或"/ about/index"或"/ contact/index".

CGI.SCRIPT_NAME返回"/rewrite.cfm"

显然使用Javascript使用document.location.href我可以得到我想要的东西.

Jak*_*sel 5

CGI.path_info是否具有您正在寻找的价值?

编辑

起初,我删除了这篇文章,完全被混淆了.现在我做了一点测试 - 我下载了最新的wheel核心文件(1.1.6),解压缩到IIS 7.5(安装了URL Rewrite模块)+ CF9 webserver,并编辑了核心中的"web.config"文件root,为重写规则设置"enabled ='true'".此外,由于我从子文件夹运行此示例,我将路径从"/rewrite.cfm"更改为"rewrite.cfm".这让我能够成功地请求这样的网址:

HTTP://服务器/ wheelstest /车轮/轮毂

从这里开始,我在views/wheels下编辑了layout.cfm,添加:

<cfdump var="#cgi#">
Run Code Online (Sandbox Code Playgroud)

当我然后请求上面的URL(/ wheelstest/wheels/wheels)时,我看到了cgi范围的转储.在path_info下,这是值:/ wheels/wheels.

接下来,我在views/wheels下添加了一个空白的"index.cfm"文件.

当我请求/ wheelstest/wheels时,我得到了path_info:"/ wheels".

当我请求/ wheelstest/wheels /时,我得到了path_info:"/ wheels /".

当我请求/ wheelstest/wheels/index时,我得到了path_info:"/ wheels/index".

当我请求/ wheelstest/wheels/index /时,我得到了path_info:"/ wheels/index /".

所以基本上--cgi.path_info正在为我完成你想要的描述.您的设置与我的设置有什么不同,以至于它没有为您返回该值?