如何在CFML中获取当前URL?已知getCurrentTemplatePath()方法
在CFML中获取当前完整URL的方法
如果你需要获取用户访问的完整URL(比如示例中的https://www.mypage.com/subfolder/iamhere.html),可以用以下两种方式实现:
方法一:通过CGI变量手动拼接(全CFML引擎兼容)
这种方式适用于所有CFML引擎(Adobe ColdFusion、Lucee等),通过拼接CGI环境变量的各个部分得到完整URL:
<cfset currentUrl = cgi.scheme & "://" & cgi.server_name> <!--- 仅当端口非默认值时添加(http默认80,https默认443) ---> <cfif (cgi.scheme eq "http" and cgi.server_port neq 80) or (cgi.scheme eq "https" and cgi.server_port neq 443)> <cfset currentUrl &= ":" & cgi.server_port> </cfif> <!--- 添加访问路径 ---> <cfset currentUrl &= cgi.script_name> <!--- 如果有查询字符串,追加到URL后 ---> <cfif len(cgi.query_string)> <cfset currentUrl &= "?" & cgi.query_string> </cfif> <!--- 输出结果 ---> <cfoutput>#currentUrl#</cfoutput>
方法二:使用Adobe ColdFusion内置函数(仅ACF可用)
如果你使用的是Adobe ColdFusion 9及以上版本,可以直接调用内置的GetCurrentUrl()函数,一步获取完整URL:
<cfset currentUrl = GetCurrentUrl()> <cfoutput>#currentUrl#</cfoutput>
注意:getCurrentTemplatePath()返回的是服务器本地的物理文件路径,和用户访问的URL属于不同概念,无法通过它直接转换得到当前URL。
内容的提问来源于stack exchange,提问作者Userx10xC
相关产品推荐
相关产品推荐

