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



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我可以得到我想要的

做CGI。Path_info有你想要的值吗?

编辑

一开始,我删除了这篇文章,感到非常困惑。现在我已经做了一个小测试-我下载了最新的车轮核心文件(1.1.6),提取到IIS 7.5(与URL重写模块安装)+ CF9 web服务器,并编辑"web。在核心根目录中配置"Config"文件,为重写规则设置"enabled='true'"。另外,由于我是从子文件夹中运行这个示例,所以我从"/rewrite"更改了路径。改为"rewrite.cfm"。这使我能够成功地请求如下url:

http://server/wheelstest/wheels/wheels

从这里,我编辑布局。CFM under views/wheels,添加:

<cfdump var="#cgi#">

当我请求上面的URL (/wheelstest/wheels/wheels)时,我看到了cgi作用域的转储。在path_info下,这个值是:/wheels/wheels。

接下来,我添加了一个空白的"索引"。

当我请求/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正在为我做你所描述的你想要的。您的设置与我的设置有什么不同,以至于它没有为您返回该值?

可能有更好的方法…但我还是要走了

每个页面都会收到#params#

    <cfdump var="#params#">
    <cfoutput>#params.action#/#params.controller#/#params.key#</cfoutput>
    <cfabort>

试着把它放到控制器中看看结果

问题是,如果params对象内的对象不存在,你会得到一个错误。因此生成的路径需要检查struct key是否存在并进行相应的编辑。

CGI。Path_Info将为您提供所需的结果。我一直在尝试不同的选择,但他们都失败了,进入重定向循环。我一切换CGI。

最新更新