Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ikki84

[Resolvido] URL Rewrite - como trabalhar com link dinâmico?

Recommended Posts

Olá amigos,

 

Depois de pesquisar em vários foruns e tutoriais não encontrei uma resposta p minha dúvida.

Estou trabalhando com url amigaveis a pouco tempo, p ser mais especifico uso a hospedagem UOLhost e trabalho com a linguagem ou ambiente ASP clássico. Sei que existem mtas informações em outras linguagens como php e outros, mas existem mtas dúvidas em asp clássico.

 

A dúvida é o seguinte, utilizei o acesso remoto pelo IIS 7 manager p fazer as permissões e importar meu arquivo .htaccess com as devidas instruções (único modo que funcionou até agora, pois o arquivo web.config do uol não me ajudou). Até aí tudo bem, já que minhas url's estáticas reescreveram certinho e o conteúdo exibia corretamente. A dureza foi quando comecei com a url dinâmica num canal de notícias que estou criando. A url quebrava os id e os números e exibia o titulo certinho, porém não exibe o conteúdo da notícia escolhida e exibe o famoso erro 404.

 

ex.: meusite.com.br/noticia-ler/data/titulo

 

O que não entendi até agora é como fazer o url rewrite capturar informaçoes do banco de dados. Também já criei pastas como o nome de data e titulo no meu servidor e também não houve resultado. De qualquer forma estou inserindo os códigos e as páginas relacionadas:

 

 

rewrite.asp (este é o arquivo com as informações que irá reescrever a url. Usei um include nas páginas)

 

<%Function URLamigavel(param)

URLamigavel = param

End Function%>

 

<%Function urlAmigavel(pag, ByVal cat, ByVal tit)

dim URL, arquivo, parametros, sField, sValue, valor

URL = "http://www.meusite.com.br/"

If InStr(pag, ".asp" ) > 0 Then

arquivo = Left( pag, ( InStr(pag, ".asp" ) -1) )

If InStr(pag, "?" ) Then

parametros = Split( Right( pag , Len(pag) - InStr(pag, "?" ) ) , "&")

For j = 0 To UBound( parametros )

sField = left ( parametros(j) , InStr( parametros(j) , "=") -1 )

sValue = Right( parametros(j) , Len(parametros(j)) - InStr( parametros(j) , "=") )

if valor = "" Then valor = sValue Else valor = valor &","& sValue End If

Next

End if

End if

If tit <> "" then

tit = "/"& FormataTitulo( tit )

If cat <> "" then

cat = "/"& FormataTitulo( cat )

End if

Else

tit = "/"

End if

If valor <> "" Then valor = "-" & valor&".html" End If

urlAmigavel = URL & arquivo & cat & tit & valor

End Function

'---------------------------------------------------------------

Function ereg_replace(ByVal ereg_vetor, ByVal repl, ByVal valor)

 

ereg_vetorV = Split(ereg_vetor, "-")

If ubound(ereg_vetorV) > 0 Then

charName = Split(ereg_vetorV(0),"|")

For i_ereg = 0 To UBound(charName)

valor = Replace(valor, charName(i_ereg), repl)

Next

If UBound(ereg_vetorV) >= 1 then

charID = Split(ereg_vetorV(1),"|")

If Join(charID) <> "" then

For i_ereg = 0 To UBound(charID)

valor = Replace(valor, "" & charID(i_ereg) & ";", repl)

Next

End if

End if

End If

ereg_replace = valor

End Function

 

'---------------------------------------------------------------</pre>

Function FormataTitulo( ByVal s )

s = Trim(s)

s = LCase(s)

s = ereg_replace("á|à|â|ã|ä|ª-@|224|225|226|227|228|229","a",s)

s = ereg_replace("é|è|ê|ë-232|233|234|235","e",s)

s = ereg_replace("í|ì|î|ï-236|237|238|239","i",s)

s = ereg_replace("ó|ò|ô|õ|º|ö-242|243|244|245|246|186","o",s)

s = ereg_replace("ú|ù|û|ü-249|250|251|252","u",s)

s = ereg_replace("ç-231","c",s)

s = ereg_replace("ñ","n",s)

s = replace(s , "-", "")

s = replace(s , "&", "")

s = replace(s , " ", "-")

s = replace(s , ",", "")

s = replace(s , "?", "")

s = replace(s , ":", "")

s = replace(s , "/", "")

s = replace(s , ".", "")

s = replace(s , "'", "")

s = replace(s , "´", "")

s = replace(s , """, "")

s = replace(s , "$", "s")

s = replace(s , "!", "")

s = replace(s , "%", "")

FormataTitulo = s

End Function %>

--------------------------------------------------------------------------------------------------------------------------------------

 

.htaccess (inserido pelo gerenciador remoto IIS 7)

 

[iSAPI_Rewrite]

RewriteRule ^([^.?]+[^.?/])$ $1/ [R,L]

RewriteRule ^/default/?([a-zA-Z0-9_-]+)?(.html)?$ /default.asp [i,L]

RewriteRule ^/noticia/?([a-zA-Z0-9_-]+)?(.html)?$ /noticia.asp?PagAtual=$2 [i,L]

RewriteRule ^/noticia-ler/?([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)-([0-9]+),([0-9]+),([0-9]+)/?(.html)?$ /noticia-ler.asp?id=$3 [i,L]

 

--------------------------------------------------------------------------------------------------------------------------------------

 

 

noticia.asp (link puxando a função "URLamigavel" do include)

 

<a href="<%=URLamigavel("noticia-ler.asp?id=", rs("data"), rs("titulo"))%>"><%=rs("data")%> - <%=rs("titulo")%></a>

 

 

--------------------------------------------------------------------------------------------------------------------------------------

 

 

noticia-ler.asp (pagina onde deve exibir a notícia escolhida)

 

<%

call conecta ()

 

 

rs.CursorLocation = 3

rs.CursorType = 0

rs.LockType = 1

sel = ("select* from noticia where id = "&request.querystring("id"))

rs.open sel,cn,3,3

 

%>

<html>

<body>

 

<font color="#FFFFFF"><%=rs("data")%><br />

<strong><%=rs("titulo")%></strong><br />

<br />

<br />

<br />

<%=rs("noticia")%>

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<div align="right"><strong>Fonte:</strong> <%=rs("fonte")%></div>

 

 

</body>

</html>

<%

call desconecta ()

%>

 

*Obs - já tentei alterar o request.querystring por titulo ou data ou ambos ao mesmo tempo e não tive resultado também.

 

 

O objetivo é deixar a URL assim: www.meusite.com.br/noticia-ler/data/titulo

--------------------------------------------------------------------------------------------------------------------------------------

 

 

Grato pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.