Urls semánticas con puntos in.net


Estoy tratando de hacer urls semánticas para las páginas de búsqueda, pero si alguien usa 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 stackoverflow tampoco funcionan en este caso: https://stackoverflow.com/questions/tagged/etc.

Author: Community, 2008-11-17

6 answers

Si está utilizando.NET 4.0 e IIS 7+, puede establecer este indicador en el sistema.sección web de tu web.config y se permitirá:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Lo he probado y funciona. Haack tiene una explicación de ello.

 24
Author: bkaid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-17 23:12:16

Todo después de la '.'es la extensión de archivo. Si esa extensión no está asignada a ASP.NET, no va a ser entregado a la ASP.NET handler. IIS busca un archivo estático en su lugar. De ahí el 404. Si no agrega nada (y es difícil ver cómo lo haría), sugiero eliminarlo.

 8
Author: dpurrington,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-30 14:24:08

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

Patrón: ^(.*[^.])(\.+)$
la Reescritura de 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 los períodos que se agregan a las URL mediante algoritmos de enlace automático puede ayudar.

 1
Author: Aaron Maenpaa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:29

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 elija "Propiedades". Haga Clic En "Configuración..."en la pestaña "Directorio personal". Mira las "Extensiones de la aplicación" e intenta agregar una extensión vacía o comodín.

 0
Author: Robert Wagner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-16 22:45:07

En Windows, los nombres de archivo no pueden terminar con '.' Creo que todos los problemas se derivan de allí, es decir, IIS no sabe qué hacer con él, por lo que nunca llega tan lejos como el ASP.NET manejador de error y obtiene los manejadores por la página predeterminada de IIS 404.

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

EDITAR: Se cae porque no tiene ningún tipo de archivo, incluso el sitio de Microsoft cae sobre la mirada http://www.microsoft.com/en/us/fallover. pero puede modificar los archivos de error predeterminados (vivir en algún lugar como C:\WINDOWS\help\iisHelp\common) o cambiarlo completamente.

Compruebe esto: Configurar Mensajes de error Personalizados (IIS 6.0)

 -1
Author: inspite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-06 13:22:56

No deberías poner búsquedas exactas de usuarios en la cadena de consulta como esa... deberías codificarlos url. Eso resolverá el problema.

 -2
Author: Timothy Khouri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-30 13:45:28