PROGRAMANDO EM ASP.NET

 Busca Online:
 

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

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



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

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


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: 3708
voltar   comente  subir


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 LOGAR

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

Cache
Orientação a Objetos - Microsoft PetShop 3.0
ASP.NET 4.0 and Visual Studio 2010 Web Development Beta 2 Overview
Trabalhando com Ipersonate e Web
Sistema de Login em ASP – Parte IX
Fazer Log, precisa ou não precisa?
DateDiff em C#.NET
Vídeos - Lançamento do Windows 7
Trabalhando com Cookie usando Visual Studio.NET 2005 (parte I)
Vídeo - Teste do Windows 7 RC
Windows Phone 7 Series Developer Training Kit
GridView Parte III
Microsoft Research Laptop Multi-Touch
Ebook Grátis Microsoft
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte I)
Page.Header
Terra TV Disponibiliza Vídeos com Silverlight
Microsoft Preview Windows Phone 7 in NYC
Cookies
Criando Números Aleatoriamente
Gravando erros com eventlog - Parte I
Concurso Office
Permissão de Página Utilizando Web.Config
Certificação - Segunda Chance
Mais um Windows Phone 7
Estatística - Browser de Acesso
Criptografando URL
Table ExoPC Slate
Reconhecimento do Google
Vídeo - Serviços do Windows Live
Visualizar no Próprio Mail (Macbook)
Gravando Erros com Exception - Parte I
TV e Internet, um casamento perfeito
UPLOAD – Enviando imagem pela Internet
GridView - Valor total no footer
Sobre o Autor
  [sumir] [aparecer]
 
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

Informaes Online
Usurios Online: 99
Artigos:  749
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC