c# - request_uri - web config rewrite condition
¿Reescribiendo URLs en ASP.NET? (5)
Estoy usando ASP.NET C #.
¿Cómo implemento el procedimiento de reescritura de URL que es similar a StackOverflow.com?
http://stackoverflow.com/questions/358630/how-to-search-date-in-sql
Además, ¿cuál es el significado de valores como "358630" en la URL? ¿Es este el ID de la pregunta (la base para la cual usan para obtener los datos de la tabla)? Sea lo que sea, en mi aplicación estoy identificando registros usando un campo "ID". Este campo es una columna de identidad en una tabla SQL. En este momento, mis URL son como las siguientes:
http://myweb.com/showdetails.aspx?id=9872
Pero me gustaría que aparezcan así:
http://myweb.com/showdetails/9872/my_question_title
O:
http://myweb.com/9872/my_question_title
O lo que sea de la mejor manera, que tendrá buen sabor para buscar bots.
Mi aplicación está alojada en el servicio de alojamiento compartido de Go Daddy , y creo que ningún "módulo HTTP" de ASP.NET personalizado o ninguna DLL personalizada para la reescritura de URL está funcionando en su servidor. Probé muchas muestras, ¡pero aún no tuve suerte!
Descubrí que Stack Overflow está alojado en Go Daddy (¿alojamiento compartido?). Tal vez el método de Stack Overflow funcione para mí.
por favor explique el significado de valores tales como "358630" en la URL
Esa es (presumiblemente) la identificación para la pregunta en la base de datos. En el modelo MVC
myurl.com/questions/358630
es análogo a
myurl.com/questions.aspx?id=358630
El título de la pregunta al final de la URL está siendo ignorado por la aplicación. En general, está "conectado" para la optimización del motor de búsqueda y la legibilidad humana. De hecho, puede cambiar el título de esta pregunta en la URL y observar que la página aún se carga bien.
Antes de la llegada de System.Web.Routing, la práctica común era usar UrlRewriter.NET . Funcionó bastante bien, pero podría morderte al configurar IIS. No estoy seguro de si hay alguna forma simple de usar las nuevas clases de enrutamiento en ASP.NET (es decir, incluirlo e ir contra el código de refactorización).
Como MVC no es una opción, puedes intentar redirigir los 404. Esto funcionará en ASP.NET 1.1 y superiores: redirecciona 404s y 405s a tu propio manejador usando configuración de IIS o web.config, analiza la solicitud en el manejador y redirige al recurso apropiado.
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="error.html">
<error statusCode="404" redirect="newHandler.aspx"/>
</customErrors>
</system.web>
</configuration>
SO está utilizando ASP.NET MVC . Realmente necesita leer en detalles cómo funciona la reescritura de URL de MVC, pero la esencia es que la parte de ''preguntas'' en la URL es el nombre de la clase Controlador (que corresponde aproximadamente a ''mostrar detalles'' en su URL) y el número es un parámetro ID para la acción predeterminada en ese controlador (igual que el parámetro ''id'' en su URL).
El nuevo dll de System.Web.Routing es parte de ASP.NET 3.5 SP1, y es bin deployable en ASP.NET 3.5 , por lo que podría usar las características de eso en un clásico sitio ASP.NET WebForms .
Probablemente desees tomar nota de los comentarios de Phil Haack en su publicación sobre el uso de MVC en IIS 6, ya que probablemente necesites incluir la extensión .aspx en tus URL enrutadas.
http://www.mysite.com/controler.aspx/action/id
También es posible que desees consultar Questions Tagged SEO .
El nombre de la pregunta ignorada al final de la url a menudo se denomina "Slug" y se usa con fines de SEO para incluir el título de la página en la url.