Urls semánticas con puntos en .net

Intento crear direcciones URL semánticas para páginas de búsqueda, pero si alguien utiliza una búsqueda terminada en punto, el motor .net devuelve un 404.

La solicitud ni siquiera llega al motor de enrutamiento, así que creo que es algo relacionado con la seguridad o algo así.

Por ejemplo, las rutas de stackoverflow tampoco funcionan en estos casos: https://stackoverflow.com/questions/tagged/etc .

Si usa .NET 4.0 e IIS 7+, puede establecer este indicador en la sección system.web de su web.config y se le permitirá:

 

Lo probé y funciona. Haack tiene una explicación de eso.

Todo después del ‘.’ es la extensión de archivo. Si esa extensión no está asignada a ASP.NET, no se transferirá al controlador de ASP.NET. IIS busca un archivo estático en su lugar. De ahí el 404. Si no agrega nada (y es difícil ver cómo sería), sugiero que se elimine.

Cuando el período posterior no es significativo (como en el caso de https://stackoverflow.com/questions/tagged/etc. ) Puede usar el módulo de reescritura de URL de IIS para quitar los períodos finales.

Patrón : ^(.*[^.])(\.+)$
Reescribir URL: {R:1}

Esto no va a ayudar cuando tirar el período no es una opción, o hay períodos al final de los segmentos de ruta intermedios, pero para el caso de uso muy real de lidiar con períodos que se agregan a las URL mediante algoritmos de enlace automático. eso puede ayudar.

Parece que IIS podría no saber cómo manejar una solicitud con una extensión vacía.

Haga clic derecho en el sitio web y seleccione “Propiedades”. Haga clic en “Configuración …” en la pestaña “Directorio de inicio”. Mire las “Extensiones de aplicación” e intente agregar una extensión vacía o comodín.

En Windows, los nombres de archivo no pueden terminar con un ‘.’ Creo que todos los problemas provienen de allí, es decir, IIS no sabe qué hacer con él, por lo que nunca llega tan lejos como el controlador de errores de ASP.NET y obtiene identificadores de la página IIS 404 predeterminada.

La mayoría de los motores de búsqueda ( bueno, Google de todos modos ) excluyen los signos de puntuación de las consultas, y creo que los tuyos también deberían.

EDITAR: Se cae porque no tiene ningún tipo de archivo, incluso el sitio de Microsoft no se parece a http://www.microsoft.com/en/us/fallover . pero puede modificar los archivos de error predeterminados (en vivo en algún lugar como C: \ WINDOWS \ help \ iisHelp \ common) o cambiarlos por completo.

Verifique esto: Configuración de mensajes de error personalizados (IIS 6.0)

No debe colocar búsquedas de usuario exactas en la cadena de consulta de esa manera … debe UrlEncode them. Eso resolverá el problema.