DICAS .NET

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

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

por Mauricio Junior em 1/1/2011 0

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

voltar   comente  subir

Download Copy





 
Mauricio Junior 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 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.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.org, Site 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):

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

Criando e Lendo Cookie
Ophone The Microsoft - Vídeo
Pagamento via celular
Novo Firefox 3.0 - o chamado Minefield
Orientação a Objetos com Visual Studio.NET 2005 (o famoso OO) – parte 1
Dica: Pegar extensão, nome do arquivo e pasta
CES em Las Vegas
Chamando Programas de Dentro do Windows Forms
Microsoft Mobile Explorer 3.0
Dica para Auto Completar Código
Usando public interface
Vídeo - Mostrando um sistema com pocket pc
Criando a Tag Cloud em C#
Criando XML a partir do DataSet Tipado com Visual Studio.NET 2005 – Parte I
Você tem boa postura no trabalho?
IsData
ASP.NET 4.0 and Visual Studio 2010 Web Development Beta 2 Overview
Evento BrasilDotNet 2008
Gravando erros com eventlog - Parte I
Dicas para programar melhor
Vídeo sobre banco de dados
Dica: SetFocus diferente
Vídeo - Tecla de Atalho
Sistema de Login em ASP – Parte III
Usando PopupControlExtender
Dica Importante SQL Server 2008 Management Studio
Registro Encontro .NET (Fotos)
Método SHA384
Alongar é preciso
iGas - Sistema de Controle de Combustível
SQL Server 2005 SP2 já está disponível :)
Sistema ASP 3.0 utilizando 3 camadas – Parte 2
CSS no VS 2003
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
Criando Números Aleatoriamente




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Notebook 3D ou 4K?

Notebook vem com tudo...

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...




NETITC