¿Hay una configuración de IIS para deshacerse de los caracteres '/' adicionales en una URL solicitada?

StackOverflow https://stackoverflow.com/questions/213153

Pregunta

El problema general:

Tenemos direcciones URL que llegan a nuestros servidores web de IIS con el formato:

  

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

También estamos viendo que las URL como esta están llegando:

  

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

Nos gustaría deshacernos de ese carácter de ruta adicional porque cuando el agente de usuario es Internet Explorer, esto se resuelve en 2 páginas diferentes y, por lo tanto, se descarga el contenido dos veces cuando debe resolverse desde un caché.

No estoy seguro de si este es un problema que deba resolverse con algo como un módulo de reescritura de URL, o si hay un ajuste de configuración.

¿Fue útil?

Solución

Creo que el problema es con IE y no con IIS.

La reescritura de URL generalmente se refiere al proceso de mapeo de una URL desde http: // example / shoes / clarkes a http: //example/shoes.aspx? maker = clarkes en el servidor para que el navegador no lo sepa.

Lo que debe hacer es redirigir el navegador de http://www.server.com//page.aspx a http://www.server.com/page. aspx usando un 301 Http código de respuesta .

En teoría:

Como parece estar usando ASP.NET, la forma más transparente de hacerlo sería escribir un BeginRequest .

De cualquier manera, el código para hacer la verificación sería el mismo.

En la práctica:

Es posible que IIS o ASP.NET se traguen el doble " / " Antes de que tengas la oportunidad de verlo. Si se trata de IIS, es posible que tenga que usar un proxy delante de IIS. Si se trata de ASP.NET, entonces puede encontrar un Extensión ISAPI que hará el trabajo por usted.

Otras opciones

Puedes hacerlo

  • Divida la página para que la mayoría de los recursos individuales puedan almacenarse en caché por separado del contenido html
  • Eduque a los usuarios de que no necesitan poner una barra adicional.

Otros consejos

¡Arregla tus enlaces!

Es más que probable que esté viendo la barra diagonal doble porque tiene enlaces erróneos en su propio sitio, ya sean codificados o generados mediante secuencias de comandos. Es fácil hacerlo por error en un script que concatene http://example.com/ + /page.aspx . ¡Preste mucha atención a esos tipos de concatenaciones!

IIS limpia barras adicionales y, por lo tanto, esto no se puede resolver con ningún código ASP.NET o HttpModule. Las barras diagonales adicionales ni siquiera llegan al archivo de registro de IIS. Probé utilizando IIS7 y telnet y no pude obtener barras adicionales en el registro o ASP.NET.

No estoy seguro de por qué la pregunta original parece involucrar solo a IE. Tanto IE como FF permiten barras adicionales en la URL y parecen transmitirlas, aunque no utilicé la detección de paquetes para verificar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top