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“
显然,通过使用document.location.href的Javascript,我可以得到我想要的。
发布于 2011-12-06 21:27:51
CGI.path_info有你想要的价值吗?
编辑
起初,我删除了这篇文章,完全被搞糊涂了。现在我已经做了一些测试-我下载了最新的轮子核心文件(1.1.6),解压到IIS7.5(安装了URL重写模块)+ CF9 CF9服务器,并编辑了核心根目录中的"web.config“文件,为重写规则设置了"enabled='true'”。此外,由于我从子文件夹运行此示例,因此我将路径从"/rewrite.cfm“更改为"rewrite.cfm”。这让我能够像这样成功地请求urls:
http://server/wheelstest/wheels/wheels
在这里,我编辑了视图/轮子下的layout.cfm,添加了:
<cfdump var="#cgi#">
然后,当我请求上面的URL (/wheelstest/wheels/wheels)时,我看到了cgi作用域的转储。在path_info下,该值为: /wheels/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正在为我做你所描述的你想要的事情。您的设置与我的设置有什么不同,以至于它不会为您返回该值?
发布于 2011-12-07 02:48:30
也许有更好的方法来做到这一点。但不管怎样,我还是要走
每个页面都会收到#params#
<cfdump var="#params#">
<cfoutput>#params.action#/#params.controller#/#params.key#</cfoutput>
<cfabort>
试着把它放到一个控制器中,看看结果
问题是,如果params
对象中的对象不存在,就会得到一个错误。因此,生成的路径需要检查结构键是否存在,并相应地进行编辑。
发布于 2021-04-16 02:09:37
CGI.Path_Info将为您提供所需的结果。我一直在尝试不同的选项,但是它们都失败了,并进入了重定向循环。当我切换到CGI.path_info的时候,一切都开始得很好。
https://stackoverflow.com/questions/8407029
复制相似问题