Existe uma IIS configuração para se livrar de '/' caracteres extra no URL solicitado?
-
03-07-2019 - |
Pergunta
O problema geral:
Temos urls próximos aos nossos servidores IIS Web formatado como:
Nós também estamos vendo que as urls como este estão vindo em:
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.
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.