使用ColdFusion从URL获取文件夹名称

时间:2016-10-25 19:53:30

标签: url coldfusion cgi

我正在尝试获取页面当前网址的一部分,但我不知道该怎么做。例如:当前页面网址为http://www.myurl.com/us/en/。我需要从网址获取的是/ us / en /。或者“http://www.myurl.com/us/en/”也可以。 任何帮助都会非常感激。 谢谢!

2 个答案:

答案 0 :(得分:0)

该信息包含在ColdFusion服务器的CGI变量范围内。如果你" dump"你可以看到该范围内的所有可用信息。它出来了。

<cfdump var="#cgi#"> 

或以脚本语法

<cfscript>
    writedump(cgi);
</cfscript>

只需将其放在CFML文件中并查看输出即可。

我认为您想要的内容包含在cgi.CF_TEMPLATE_PATHcgi.PATH_TRANSLATED字段中。

文档参考 - CGI environment (CGI Scope) variables

我创建了一个快速的代码片段,可以满足您的需求。 Check it out here

<cfscript>
    info=replace(cgi.path_translated,cgi.script_name,'/');
    writeOutput(info);
    writeDump(cgi);
</cfscript>

答案 1 :(得分:0)

这取决于文件夹是否确实存在。如果您正在使用网址重写...

<!--- IIS7 --->
<cfif CGI.HTTP_X_ORIGINAL_URL neq ''>
    <cfset urlStrings = listToArray(spanExcluding(CGI.HTTP_X_ORIGINAL_URL,"?"), "/")>
</cfif>
<!--- ISAPI_rewrite --->
<cfif CGI.HTTP_X_REWRITE_URL neq ''>
    <cfset urlStrings = listToArray(spanExcluding(CGI.HTTP_X_REWRITE_URL ,"?"), "/")>
</cfif>

之后,您可以将url用作数组。

<cfloop from="1" to="#arraylen(urlStrings)#" index="u">

<!--- THE QUERY --->
<cfquery name="test" dbtype="query" maxrows="1">
SELECT id, title, menuTitle, h1
FROM application.allNav
WHERE
    urlname = '#urlStrings[u]#' AND
    active = 1
</cfquery>
...

但是要获取文件夹名称(假设IIS):

<cfoutput>#spanExcluding(CGI.HTTP_X_ORIGINAL_URL,"?")#</cfoutput>