Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Carregando comentários...