Olá pessoal, tudo bom?
Como todos sabemos, uma das coisas que ajudam a melhorar o posicionamento do seu site junto aos mecanismos de busca (Google, Bing, etc) é a qualidade das URLs que o mesmo divulga, veja o exemplo abaixo:
- URL ruim: http://www.seusite.com/conteudo/cursos.aspx?codigo=365
- URL boa: http://www.seusite.com/curso/ciencia-da-computacao
No exemplo, as duas URLs levariam para a mesma página, mas convenhamos que a segunda é muito mais legível que a primeira e, essa legibilidade, é levada em conta pelos mecanismos de busca, pois os mesmos consideram as palavras da URL como keywords que ajudam na indexação do conteúdo do site.
O ASP.Net possui um mecanismo chamado de Routing que ajuda o desenvolvedor a “transformar” suas URLs em caminhos mais amigáveis, vejamos os passos:
- Crie um projeto do tipo ASP.NET (neste exemplo adotaremos o C# como linguagem de programação)
- Adicione uma referência para o asembly System.Web.Routing
- Adicione (caso já exista edite) o arquivo Global.asax e proceda conforme abaixo:
a) Importe o namespace System.Web.Routing... using System.Web.Routing; ...
b) Adicione o método RegisterRoutes e depois acrescente o código correspondente no método Application_Start
... public class Global : System.Web.HttpApplication { void RegisterRoutes(RouteCollection routes) { routes.MapPageRoute( "cursos", //Nome da rota "curso/{nomecurso}", //URL com parametro "~/Rota.aspx" //Página que vai manipular a rota ); } protected void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes); } ... ...
- Adicione a página Rota.aspx e no método Page_Load acrescente o código a seguir:
... protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (RouteData.Values["nomecurso"] != null) { switch (RouteData.Values["nomecurso"].ToString().Trim()) { case "ciencia-da-computacao": Server.Transfer("~/ExibeCurso.aspx?codigo=10"); break; case "sistemas-informacao": Server.Transfer("~/ExibeCurso.aspx?codigo=26"); break; default: Response.Redirect("http://www.seusite.com"); break; } } } } ... ...
Pronto, a partir daí, sua URL que no exemplo exibe os cursos oferecidos por uma determinada instituição, passaria a ser identificada como http://www.seusite.com/curso/ciencia-da-computacao
Um grande abraço,
Eduardo Henrique Rizo
[twitter-follow screen_name='eduardorizo' show_count='yes']
Awe Eduardo blz? pode disponibilizar um projeto pra download..acho que eu me confundi numa coisa aqui
Tudo bom e aí?
Eu alterei o artigo e agora disponibilizei o arquivo do projeto para download.
[]s
Eduardo
Eduardo, blz?
Fiz o download do exemplo… e não funcionou. Quando eu digito /ExibeCurso.aspx?codigo=10, embora o label receba o valor (através do switch que você colocou no PageLoad da página), a URL não é mudada, continua em sua forma “não-amigável”.
Sim, mas a idéia não é você digitar a URL passando o código do curso, mas sim digitar http://seusite.com/curso/ciencia-da-computacao e aí o ASP.NET Routing faz o redirecionamento para o local correto.
Certo?
[]s
Eduardo
Entendi! Vou adaptar aqui.
Valeu !!!!!!!!!!!!!! Depois te pago um pastel de queijo e uma caçulinha!
kkkkkkkk
Eduardo.. eu de novo!
Consegui. Obrigado mais uma vez. Fazia tempo que eu estava na procura de um tutorial assim.
Fica só uma dica para complementar. Quando se muda a URL, se os arquivos .css, js ou qualquer referência no não estiver com o caminho absoluto, eles perderão a referência. Então.. o conselho é sempre colocar ” ../ ” na hora de “chamar” esses arquivos.
Exemplo:
<link href=”../css/estilo.css” rel=”stylesheet” type=”text/css” /> //NÃO DÁ PAU!
<link href=”css/estilo.css” rel=”stylesheet” type=”text/css” /> // ADEUS CSS!
– A dica vale para imagens também.
– Percebi que somente o caminho dos arquivos referenciados na página que a URL está sendo tratada que têm as referencias modificadas. Ou seja, se a página tiver uma MasterPage, os links da master page continuam iguais, sem a necessidade de alterações.
Opa, valeu pela dica…
Grande abraço,
Eduardo
O wordpress “comeu” uns pedaços do meu comentário ¬¬’ … pensaram que eu estava mandando uns scrips maliciosos para você
Achei estranho mesmo… mas me mande por e-mail que daí edito seu comentário e coloco o assunto completo.
Pingback: ASP.NET Routing e error 404 do IIS « Blog do Eduardo H. Rizo
Bom dia Eduardo, fiz conforme o artigo creio q funcionou, mas parece q deu erro em outro codigo q uso, Page.Title = SiteMap.CurrentNode.Title +” – TV Cidade”; ele nao esta puxando o Web.sitemap me parece, oq fazer para solucionar esse erro?
Abraços
Esta dando erro com server.transfer com responde.write funciona de boa =/
Qual é o erro?
Renato, qual é mensagem de erro?
Eduardo, era algo como objeto nulo, mas ja resolvi o erro hhehe, obrigado 😉 Abraços