Para una solicitud a:
http://domain.com/
cuando se hace referencia desde el evento Begin_Request
en un HttpModule
:
HttpContext.HttpRequest.Url.AbsolutePath == "/"
... Url.AbsoluteUri = "http://domain.com/"
... Url.LocalPath = "/"
Si usted no está viendo los valores de Application_BeginRequest
, puede que tenga que registrar una separada HttpModule
. Los eventos Global.asax solo se llaman para el HttpHandlers
administrado, por lo que no se pueden llamar hasta que IIS realice un redireccionamiento interno (transferencia) a "/default.aspx".
También es posible que deba deshabilitar el manejo de documentos predeterminado en IIS para que funcione en la dirección que le interesa (la mayoría de los sitios redireccionan de /
a /default.aspx
, y no al revés).
Editar: otra idea. Registre una nueva extensión como manejador de página ASP.NET, con un proveedor de compilación (en web.config) - tal vez * .asph o algo así. A continuación, cambie el nombre de su actual default.aspx
a default.asph
. A continuación, agregue default.asph
a la parte superior de la lista de archivos predeterminados en IIS, reemplazando default.aspx
. Cree un nuevo archivo default.aspx
, cuya única función en el código subyacente es redireccionar al /
. Deberias hacer eso.
¿Está utilizando ASP.NET de enrutamiento? Si es así, ¿cómo se ve su ruta? –
Tengo curiosidad por saber cómo esto ayuda a SEO, ¿no te podría penalizar un 403? En cualquier caso, creo que un httpmodule puede hacer esto ... ¿es esa una opción? – itchi
Estoy tratando de hacer lo mismo por la misma razón: me han dicho que tener varias URL para la misma página se considera algo malo, así que lo que quiero hacer es detectar una solicitud de "/default.aspx" y emita un redireccionamiento 301 a "/". La respuesta de RickNZ parece un poco compleja. Me interesa ver si tienes una solución más simple. – Andy