Busca online em todo site:
Heroes

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.




Título do Artigo

URL Indexável – Reescrever URL de uma forma amigável


Data Publicação: 17/12/2008 10:21:04
Total de visualizações: 2516

comente
 


Requisitos:

 

Ferramenta de Desenvolvimento: Visual Studio.NET 2008 SP 1

Framework: .NET 3.5

Tipo de Aplicativo: Web Site

Nível de Conhecimento: Avançado

 

Objetivo:

 

         O meu objetivo é mostrar a você leitor, como desenvolver um site com uma url mais amigável, facilidade de indexação em site de busca, melhor maneira de o usuário entrar diretamente no site e isso tudo dinamicamente. Por exemplo: uma url de notícia do meu site www.meusite.com.br/noticia.aspx?id=12 ficar da seguinte maneira; www.meusite.com.br/noticia/12/titulo-da-noticia.aspx

 

Exemplo:

 

         O exemplo mostrado no texto é real e simples de entender, basta ter um pouco de conhecimento na ferramenta de desenvolvimento e programação. Para você que está começando agora, o desafio para entender e fazer o exemplo. As imagens são reais, tente seguir passo a passo.

 

Desenvolvimento Efetivo

 

Referência: 1.1

 

         O primeiro passo foi criar um projeto na ferramenta Visual Studio.NET 2008 do tipo Web Site. Adicionei um novo item, uma página chamada Noticia.aspx, adicionei também um outro item essencial Global.asax. (Referência 1.2)

 

Referência: 1.2

 

         O primeiro passo depois de adicionar os itens (clicando com o botão direito em cima do projeto e escolhendo Add New Item...), devo customizar e definir o arquivo Noticia.aspx, depois acrescentarei um novo método dentro do arquivo Global.asax.

 

Customizando a Página Noticia.aspx

 

         Cliquei duas vezes em cima da página Noticia.aspx que, abriu o arquivo Noticia.aspx.cs, dentro do método Page_Load. Acrescentei duas linhas de código. (Table 1.1)

 

 

    protected void Page_Load(object sender, EventArgs e)

    {

        string id = Request["id"].ToString();

        Response.Write(id);

    }

 

Table 1.1

 

         Note que declarei uma variável chamada id do tipo string. O comando Request[“id”].ToString() pega o valor passado via request para a página. O passo seguinte foi escrever a minha variável na tela (Response.Write(id)). Todo esse passo foi apenas para pegar o id passado pela notícia.

 

Customizando Global.asax

 

         O primeiro passo que fiz junto ao arquivo Global foi criar outro método chamado Application_BeginRequest(Object sender, EventArgs e). (Referência 1.3)

Referência: 1.3

 

Nota-se que, primeiro de tudo foi, pegar o contexto da aplicação. Depois criei três variáveis do tipo string. Usei o Regex com o código @(\w)/(\d+)/(\S+).aspx que é uma expressão regular. Aqui está o segredo, pois essa expressão regular pega a sua url. O primeiro parâmetro é para palavra sem espaço, o segundo parâmetro para número e o último parâmetro é para palavra alfa numérica.

Ignorei os passos e os casos, pois podem ter urls que não usam esse tipo de expressão. Verifico se existe alguma url com esse formato para poder pegar os próximos dados.

O comando incoming redireciona para a página correta passando o id para pegar o dado / chave da notícia.

 

Referência: 1.4

 

         Executando o projeto, coloquei o /noticia/2/titulo-noticia.aspx, note que automaticamente apareceu o número da notícia, é a chave para buscar no banco de dados e preencher algum objeto de tela como: datagrid, datalist ou mesmo um label.

         Dessa maneira, é mais fácil sites de buscar indexarem as urls. Caso coloque outra url como /teste.aspx, não passará pela validação, o mesmo buscará a própria página teste.aspx.

 

         Bom, fico por aqui. Qualquer dúvida, favor entrar em contato. Poderei ajudar.

 

Mauricio Junior

www.mauriciojunior.org

blog.mauriciojunior.org



Total de visualizações: 2516
voltar   comente  subir

Autor:


Por:Mauricio Junior
Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org


Comentários:

Comentado por: Marcelo - 25/12/2008 0:00:00
Boa tarde Mauricio, primeiramente parabéns pelo trabalho, pelas matérias e obrigado pelas dicas.

Tenho uma dúvida, se você puder me ajudar ficarei muito grato.

Estou desenvolvendo uma pagina Intranet no meu serviço, estou usando o Asp.Net visual basic do Visual Studio 2005. Bem configurei o IIS em uma estação de trabalho e hospedei minha aplicação nessa estação. O problema é que para acessar a aplicação o usuário precisa digitar na URL o nome da estação por exemplo "\\NomeComputador\Intranet\Index.htm". Não gostaria que o usuário enxergasse o nome da estação. Seria possível criar uma espécie de Álias para o endereço da minha intranet?

Obrigado

Abraço
Comentado por: Vinícius Valente - 12/6/2009 0:00:00
Fiz tudo isso.
E no Visual Studio funcionou perfeitamente. Porem no IIS ignorou o global.asax.
Alguém faz ideia do porque disso?
Comentado por: Marcelo - 11/7/2009 0:00:00
Olá Mauricio,
Seu artigo é bem legal e estou tentando implementa-lo no meu projeto.

O meu maior problema tem sido conseguir arrumar as referencias de imagens, css e js do site.

Eu tenho uma estrutura de subpastas da seguinte forma:

- default.htm (raiz) - chama a primeira pagina do site
- forms (pasta onde estão os forms)
- forms/styles (estilos do site)
- forms/js (js do site)
- controles (user controls)
- controles/styles (estilos usados pelos controles)

Não consigo fazer as referencias dos arquivos destas pastas e o site fica todo sem estilos e desfigurado.

Se puder me dar uma ajuda, agradeço !!!

Abraços,
Marcelo.
Comentado por: Marcelo - 11/7/2009 0:00:00
Olá Mauricio,
Seu artigo é bem legal e estou tentando implementa-lo no meu projeto.

O meu maior problema tem sido conseguir arrumar as referencias de imagens, css e js do site.

Eu tenho uma estrutura de subpastas da seguinte forma:

- default.htm (raiz) - chama a primeira pagina do site
- forms (pasta onde estão os forms)
- forms/styles (estilos do site)
- forms/js (js do site)
- controles (user controls)
- controles/styles (estilos usados pelos controles)

Não consigo fazer as referencias dos arquivos destas pastas e o site fica todo sem estilos e desfigurado.

Se puder me dar uma ajuda, agradeço !!!

Abraços,
Marcelo.
Comentado por: Mauricio Junior - MVP, MCAD, MCP Microsoft - 17/7/2009 0:00:00
Marcelo, obrigado por comentar. Você conseguiu ler todo o exemplo e fazer conforme o artigo informa? Não tem segredo, basta conhecer o conceito de forma objetiva. O que você pode utilizar para achar as outras páginas é: usar caminho relativo ou absoluto, por exemplo: enderço completo ou ~/pasta entendeu? Qualquer dúvida, tente fazer conforme o artigo fala e veja o problema. Qualquer coisa pode entrar em contato.
Comentado por: Marcelo de Oliveira - 17/7/2009 0:00:00
Olá Mauricio,

resolvi o problema.
toda chamada fake que era direcionada a página correta, ao chegar no destino certo, todos os caminhos de css, js etc estavam com o caminho fake incorporado.

O que fiz foi interceptar todos esses caminhos e corrigir. Feito isso funcionou.

Abraços,
Marcelo.
Comentado por: Rafael - 17/7/2009 0:00:00
bom artigo!
então, também estou com o mesmo problema :) já fiz de tudo, alguma solução? as referencias se perdem, imagens, css, scripts a página não consegue identificar o caminho já tentei ~/. ../, etc e nada :) ficaria grato de saber a solução.

abraços

rafael
Comentado por: Rafael - 17/7/2009 0:00:00
bom artigo!
então, também estou com o mesmo problema :) já fiz de tudo, alguma solução? as referencias se perdem, imagens, css, scripts a página não consegue identificar o caminho já tentei ~/. ../, etc e nada :) ficaria grato de saber a solução.

abraços

rafael
Comentado por: Mauricio Junior - MCP, MCAD, MVP Microsoft - 24/7/2009 0:00:00
Rafael, tente pegar o caminho total e colocar apenas / e não ~/ entendeu?
Comentado por: Diego P Oliveira - 29/11/2009 0:00:00
Mauricio,

O mesmo estava ocorrendo comigo e resolvi utilizando o caminho utilizando a barra (/) antes dos links, porém ao publicar para o IIS nada mais funcionava, pois só funciona sem a barra (/) antes dos link's. Existe algum procedimento diferente no momento da publicação.

Outra dúvida é. Tudo que foi configurado no global.asax funciona apenas ao compilar e no momento da publicação ao acessar a página indexada ocorre o erro de página não encontrada (Erro 404), isso também teria alguma solução???

Desde já agradeço!
Comentado por: Mauricio Junior - 29/11/2009 0:00:00
Diego, você fez tudo passo a passo do que está sendo explicado no artigo? Tente colocar todas as páginas no diretório padrão. Usando / funciona perfeitamente como mostrei no artigo.

Comente (dê sua opinião): VOCÊ PRECISA ESTAR LOGADO

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Controle de peso mobile
Retirar Tag HTML dos campos utilizando expressão
Convertendo String para Guid
O vírus do curriculum
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte II)
Evento Brasil DotNet - gratuíto
Criando Splash - Com Efeito
Google e Amazon
Promoção Assinatura Grátis DevMedia e ASPNETi.COM
Criando Números Aleatoriamente
E-mail Carta de Amor - Vírus
Ajax com C#.NET (parte 1)
IsAlpha
Terra TV Disponibiliza Vídeos com Silverlight
Virtual Earth - Segundo Passo
WebService - Desenvolvimento Parte 1
O Avanço do Blu-Ray no Brasil
Virtual Earth – Primeiro Passo
Educação no Brasil
GridView Parte I
Vídeo - Conecte
Ophone The Microsoft - Vídeo
Google Sync Mobile
Vídeo - Mitos da bateria
Usando Themes ASP.NET 2.0 (Parte 2)
Evento Java versus DotNet
CRIANDO MENU DINÂMICO COM C#.NET Passo 1
WebServices - Desenvolvimento Parte 2
Servidor Integrado - Visual Studio.NET
Conecte - netBOOKS
Web 2.0 - A máquina somos nós
Criptografia de String de Conexão no Web.Config
Mais um certificado Microsoft
Exemplo usando try e catch
Vídeo - Microsoft Surface: The Power

Publicidade:

[sumir] [aparecer]
LAYERDEV




Informaes Online:

Usurios Online: 473
Artigos:  663
Vdeos:  47
PodCast's:  31
Frum:  3098
Empregos:  1226
Usurios Cadastrados: 5794

Categoria de Artigos

Vdeos

Enquete - D sua opinio

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 382 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC