asp.net - novio - maria sharapova ranking
ASP.NET Response.Redirect usa 302 en lugar de 301 (4)
301 es cache-able. si está utilizando ASP.NET 4.0, puede usar RedirectPermanent .
Además, configure su código de estado después de redirigir
también, mira estas respuestas. Código de estado HTTP Response.Redirect
usando el siguiente código
context.Response.StatusCode = 301;
context.Response.Redirect(newUrl, true);
context.Response.End();
Puedo ver en el violinista que está usando un 302 en lugar de un 301. ¿Debería establecer el estado después de la llamada de redirección?
Estoy combinando las respuestas anteriores con algo que uso si tengo dominios / subdominios antiguos para diferentes versiones de un sitio que deseo redireccionar al actual, principalmente por motivos de SEO, para no tener múltiples versiones del mismo sitio. en diferentes URL:
using System;
using System.Net;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace myapp.web {
public class Global : HttpApplication {
void Application_Start(object sender, EventArgs e) {
// Code that runs on application startup
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
protected void Application_BeginRequest(object sender, EventArgs e) {
//some of these checks may be overkill
if ((HttpContext.Current != null)
&& (HttpContext.Current.Request != null)
&& (HttpContext.Current.Request.ServerVariables != null)
&& (!String.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_HOST"]))
) {
switch (HttpContext.Current.Request.ServerVariables["HTTP_HOST"]) {
case "old.url.com":
HttpContext.Current.Response.RedirectPermanent("https://new.url.com", true);
//status code is not needed if redirect perm is used
HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
HttpContext.Current.Response.End();
break;
case "nightly.old.url.com":
HttpContext.Current.Response.RedirectPermanent("https://nightly.new.url.com", true);
//status code is not needed if redirect perm is used
HttpContext.Current.Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
HttpContext.Current.Response.End();
break;
}
}
}
}
}
Response.Redirect () sobrescribirá la propiedad StatusCode con el código para una redirección (302). Además, como está utilizando la sobrecarga Response.Redirect () tomando el parámetro booleano, debe establecerlo en False si desea llamar a Response.End () usted mismo. De lo contrario, es redundante y puede causar errores.
Pruebe lo siguiente (pre-ASPP.NET 4.0; la respuesta de Adam Butler cubre la nueva mejor práctica):
context.Response.Redirect(newUrl, false);
context.Response.StatusCode = 301;
context.Response.End();
Si está utilizando ASP.Net 4.0, puede usar Response.RedirectPermanent , que usará 301 en lugar de 302.