Escondendo padrão.aspx da URL
-
06-07-2019 - |
Pergunta
Eu queria saber se existe uma solução usando o IIS6 para um aplicativo para livrar-se do padrão.aspx texto na url.assim, por exemplo, se um usuário acessa:
www.website.com/default.aspx
o navegador somente mostra:
www.website.com/
Não importa o que.É só para SEO.
Eu já uso UrlRewriting.NET para algumas regravações no meu aplicativo, mas eu não sou tão inteligente para criar uma regra para isso.
Qualquer ajuda é muito aprecio.
Obrigado.Jose
Solução
Se você tem algo para fazer a reescrita de URL, tudo o que você precisa para garantir que seus links apontem para o URL correto.
Se você não corrigir seus links, cabe ao navegador decidir se deseja exibir o link real solicitado.
Se você realmente gostaria de fazer um trabalho desonesto, pode usar algum JavaScript para fazer a barra de endereços do navegador exibir o que quiser, mesmo que seja inválido.
Outras dicas
Eu acho que Scottgu já tem o tópico de reescrita no ASP.NET coberto: http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-sen.aspx.
Ele cobre coisas como:
- Reescrevendo usando urlrewriter.net, reescrita ISAPI
- Truques do ASP.NET, postando de volta (atingindo a versão amigável do URL)
Com o seu problema, acho que você precisa usar uma combinação de, nunca vinculando a 'padrão.aspx', ou seja. Apenas link para '/'. Em seguida, use o arquivo do navegador de postagem do Scott para garantir que os postagens sempre atinjam a mesma versão amigável do URL.
Redirecionar 'default.aspx' para '/', que então é servido por 'default.aspx' soa como uma receita para o desastre para mim. Basta corrigir seus links para garantir que você nunca acabe em 'padrão.aspx' explicitamente.
Eu acho que a maneira mais simples de alterar o índice de resultados de pesquisa (supondo que ele saiba sobre o HTTP 301) é escrever um pouco de função no seu padrão.
void Page_Load(...) {
if(Request.Path.EndsWith("default.aspx", true/*case-insensitive*/, null)) {
Response.StatusCode = 301;
Response.StatusDescription = "Moved Permanently";
Response.Headers.Add("Location", "/");
HttpContext.Current.ApplicationInstance.CompleteRequest(); // end the request
}
// do normal stuff here
}
Se o padrão.aspx é definido como o documento padrão para servir no IIS e todos os seus interno links de site contêm URL sem o padrão.aspx, então eu acho que deve fazer o truque.
Embora o usuário ainda pode digitar padrão.aspx, spiders de mecanismos de pesquisa deve apenas pegar o mais amigável URL do seu link href atributos.
A maneira como eu faria é usar o application_beginRequest na classe pública global: system.web.httpApplicação e verificar o httpcontext.current.request.url para default.aspx e, em seguida isto.
A desvantagem é ter um redirecionamento nem sempre é tão bom e isso não vai funcionar se você estiver postando dados para essa página padrão.aspx. Mas você não pode simplesmente enganar o navegador a mostrar um URL diferente, embora você possa dizer ao ASP.NET para servir qualquer página que desejar para qualquer solicitação.