supongo que desea hacer esto porque desea que los usuarios puedan ver las URL bonita que mira. La única forma de lograr que el cliente "modifique" la URL en su barra de direcciones es enviarla a una nueva ubicación, es decir, debe redirigirla.
¿Los parámetros de la cadena de consulta van a afectar el resultado de su página? Si es así, tendrá que ver cómo mantener el estado entre las solicitudes (variables de sesión, cookies, etc.) porque los parámetros de cadena de consulta se perderán tan pronto como lo redirija a una página sin ellos.
Hay algunas maneras que usted puede hacer esto a nivel mundial (en orden de preferencia):
- Si usted tiene un control directo sobre el entorno de servidor a continuación, un módulo de servidor configurable como ISAPI_ReWrite o IIS 7.0 URL Rewrite Module es un gran acercamiento.
- Un
IHttpModule
personalizado es un enfoque roll-your-own agradable y reutilizable.
- También puede hacer esto en el
global.asax
como sugieres
Sólo debe utilizar el código 301
respuesta si el recurso de hecho se ha movido de forma permanente. Nuevamente, esto depende de si su aplicación necesita usar los parámetros de cadena de consulta. Si usa un redireccionamiento permanente, un navegador (que respeta el código de respuesta 301
) omitirá la carga de una URL como .../default.aspx?utm_source = twitter & utm_medium = social-media y carga .../default.aspx - nunca conocerás los parámetros de la cadena de consulta.
Finalmente, puede usar las solicitudes de método POST
. Esto le proporciona URL limpias y le permite pasar parámetros, pero solo funcionará con los elementos <form>
o le solicita que cree usando JavaScript.
¡Perfecto! Gracias Señor. – Chris
Esto es lo que finalmente se nos ocurrió: // begin poor formatting string rawUrl = String.Concat (this.GetApplicationUrl(), Request.RawUrl); if (rawUrl.Contains ("/ post /")) { bool hasQueryStrings = Request.QueryString.Keys.Count> 1; if (hasQueryStrings) { Uri uri = new Uri (rawUrl); rawUrl = uri.GetLeftPart (UriPartial.Path); HtmlLink canonical = new HtmlLink(); canonical.Href = rawUrl; canonical.Attributes ["rel"] = "canónico"; Page.Header.Controls.Add (canónico); } } Seguido de una función para recuperar correctamente la URL de la aplicación. Funciona a la perfección. – Chris
eek, no estoy seguro de cómo solucionar eso :(lol – Chris