2008-02-10

URL, como tratar?

Venho compartilhar mais um código, depois de algum tempo sem escrever.

Você tem uma url como - http://site/index.cfm?var1=17&var2=2, mas acha que a url está muito suja, e gostaria de fazer algo a respeito.
Muitos usam recurso que está neste código, para tornar a url mais amigável.
<cffunction name="configureEscopoUrl" output="false" access="public" returntype="void">

<cfset var uVars=ListFirst(trim(cgi.path_info), '?')>
<cfset var item = "" >

<cfif listLen(uVars,"/")>
<cfloop list="#uVars#" index="item" delimiters="/">
<cfset url[listfirst(item,"_")] = "" >
<cfif listlen(item,"_") gt 1>
<cfset url[listfirst(item,"_")] = listlast(item,"_") >
</cfif>
</cfloop>
</cfif>

</cffunction>


executando esta função no começo do Application.cf(c/m), sua url pode ser executada tanto da primeira forma, como também: http://site/index.cfm/var1_1/var2_2

4 comentários:

Anônimo disse...

Olá fiz testes com esse código e obtive sucesso, porém um detalhe me chamou a atenção, ao utilizar links relativos os mesmos perdem o apontamento (por exemplo css ou js).

Pedro Claudio disse...

geralmente os estilos estão em /css ou http://site/css, você pode chamar assim src="/image/logo.gif", eu prefiro criar uma variável que contenha os caminhos, e na construção do html chamo o caminho completo.

<cfset application.paths = structnew() >
<cfset application.paths.image = "http://site/image/" >
<cfset application.paths.css = "http://site/css/" >
<cfset application.paths.js = "http://site/js/" >


<cfoutput><img src="#application.paths.image#logo.gif" ></cfoutput>

[]s

Anônimo disse...

Olá amigo, esse problema se resolve facilmente colocando a pasta relative na tag BASE dentro do HEAD do html, por exemplo:

<base href="http://www.site.com/" />

Com isso, todos os links, imagens e scripts são carregados com referência à esta base que você predefiniu.

Abraços!

Pedro Claudio disse...

Valeu Ric!

[]s