Я пытаюсь получить часть текущего URL-адреса страницы, и я не уверен, как это сделать. Например: URL текущей страницы будет http://www.myurl.com/us/en/. Что мне нужно, чтобы получить от URL-адреса/us/en /. Или «http://www.myurl.com/us/en/» также будет работать. Любая помощь с этим была бы весьма признательна. Спасибо!Получить имена папок по URL-адресу, используя ColdFusion
0
A
ответ
0
Эта информация содержится в пределах переменной области видимости сервера ColdFusion CGI
. Вы можете увидеть всю доступную форму информации в этой области, если вы «сбросите» ее.
<cfdump var="#cgi#">
или в синтаксисе сценария
<cfscript>
writedump(cgi);
</cfscript>
Просто поместите, что в файле CFML и посмотрите на результат.
Я думаю, что вы хотите, содержится в полях cgi.CF_TEMPLATE_PATH
и cgi.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>
0
Это зависит от того, существует ли папка на самом деле. Если вы используете переписывание URL ...
<!--- 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>