2016-10-25 4 views
0

Я пытаюсь получить часть текущего URL-адреса страницы, и я не уверен, как это сделать. Например: URL текущей страницы будет http://www.myurl.com/us/en/. Что мне нужно, чтобы получить от URL-адреса/us/en /. Или «http://www.myurl.com/us/en/» также будет работать. Любая помощь с этим была бы весьма признательна. Спасибо!Получить имена папок по URL-адресу, используя ColdFusion

ответ

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>