Pergunta

O problema geral:

Temos urls próximos aos nossos servidores IIS Web formatado como:

http://www.server.com/page.aspx

Nós também estamos vendo que as urls como este estão vindo em:

http://www.server.com//page.aspx

Nós gostaríamos de se livrar desse personagem caminho extra porque quando o agente de usuário é Internet Explorer, este é resolver como 2 páginas diferentes, e, portanto, fazer o download do conteúdo duas vezes quando ele deve ser resolvido a partir de um cache.

Eu não tenho certeza se este é um problema a ser resolvido com algo parecido com um módulo de regravação de URL, ou se não houver uma definição de configuração.

Foi útil?

Solução

Acho que a com o IE e não problema IIS.

reescrita de URL normalmente se refere ao processo de mapeamento de uma URL a partir http://example/shoes/clarkes para http://example/shoes.aspx?maker=clarkes no servidor para que o navegador não sabe sobre isso.

O que você precisa fazer é redirecionar o navegador da http://www.server.com//page.aspx para http://www.server.com/page.aspx usando um 301 código de resposta HTTP .

Em teoria:

Como você parece estar usando ASP.NET, a forma mais transparente de fazer isso seria escrever um HttpModule que verifica a existência de barras duplas na URI solicitado e faz o redirecionamento.

A maneira mais fácil de fazer isso é colocar algum código em Global.ascx (cs | vb). Para verificar o URI solicitado em BeginRequest .

De qualquer maneira, o código para fazer a verificação seria o mesmo.

Na Prática:

Pode ser que o IIS ou ASP.NET engole a dupla "/" antes de ter a chance de vê-lo. Se for IIS, em seguida, você pode ter que usar um proxy na frente do IIS. Se é ASP.NET então você pode ser capaz de encontrar um Extensão ISAPI que irá fazer o trabalho para você.

Outras Opções

Você poderia

  • Split a página para cima, para que a maior parte dos recursos individuais podem ser armazenadas separadamente do conteúdo html
  • Educar os usuários que não precisa colocar a barra extra no.

Outras dicas

Corrigir seus links!

Mais do que provavelmente você está vendo a barra dupla, porque você tem ligações erradas em seu próprio site, seja codificado ou script gerado. É fácil de fazer isso por engano em um script que concatena http://example.com/ + /page.aspx. Preste muita atenção a esses tipos de concatenations!

O IIS limpa fora barras extra e por isso não podem ser tratadas com qualquer código ASP.NET ou HttpModule. As barras extras nem sequer fazê-lo no arquivo de log IIS. Eu testei usando IIS7 e telnet e não conseguia barras extras para o log ou ASP.NET.

Não estou certo por que a pergunta original parece envolver apenas IE. IE e FF permitir cortes extra no URL e parecem transmiti-los, embora eu não usar packet sniffing para verificar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top