Je voudrais redirect tout le trafic www vers le trafic non-www
j’ai copié ceci dans mon web.config
/ /
par ce post
Comment redirect avec les URL “www” vers sans URL “www” ou vice-versa?
mais j’ai eu une erreur de serveur interne de 500.
Vous pourriez envisager une approche différente:
protected void Application_BeginRequest (object sender, EventArgs e) { if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback) { UriBuilder builder = new UriBuilder (Request.Url); builder.Host = "www." + Request.Url.Host; Response.Redirect (builder.ToSsortingng (), true); } }
Cela fera cependant une redirection 302, donc un petit tweak est recommandé:
protected void Application_BeginRequest (object sender, EventArgs e) { if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback) { UriBuilder builder = new UriBuilder (Request.Url); builder.Host = "www." + Request.Url.Host; Response.StatusCode = 301; Response.AddHeader ("Location", builder.ToSsortingng ()); Response.End (); } }
Celui-ci retournera 301 définitivement déplacé.
si vous l’avez copié directement, vous avez un marquage incorrect dans votre fichier web.config
vous avez besoin
La ligne qui dit
/ /
indique que vous devez mettre la configuration à cet emplacement dans votre web.Config.
est l’une des sections de configuration de votre fichier web.Config.
Assurez-vous que le module URL Rewrite est installé pour IIS7
La page ci-dessus parle de redirect HTTP vers HTTPS, mais le concept s’applique toujours à WWW à non WWW
En outre, voici quelques informations détaillées sur la façon dont tout se passe.
**For a www to a non www Thanks @developerart** protected void Application_BeginRequest(object sender, EventArgs e) { if (Request.Url.Host.StartsWith("www") && !Request.Url.IsLoopback) { UriBuilder builder = new UriBuilder(Request.Url); builder.Host = Request.Url.Host.Replace("www.",""); Response.StatusCode = 301; Response.AddHeader("Location", builder.ToSsortingng()); Response.End(); } }
protected void Application_BeginRequest(object sender, EventArgs e) { if (!this.Request.Url.Host.StartsWith("www") && !this.Request.Url.IsLoopback) { var url = new UriBuilder(this.Request.Url); url.Host = "www." + this.Request.Url.Host; this.Response.RedirectPermanent(url.ToSsortingng(), endResponse: true); } }
Sur la base de la réponse de l’utilisateur 151323, voici la réponse complète pour les utilisateurs Azure qui souhaitent également empêcher les utilisateurs d’accéder au site à partir d’un sous-domaine azureewebsites.net
(cela entre dans votre classe MvcApplication
).
protected void Application_BeginRequest(object sender, EventArgs e) { if (Request.Url.Host.StartsWith("YourSite.azureewebsites") && !Request.Url.IsLoopback) { Response.StatusCode = 301; Response.AddHeader("Location", "www.YourSite.com"); Response.End(); return; } if (!Request.Url.Host.StartsWith("www") && !Request.Url.IsLoopback) { UriBuilder builder = new UriBuilder(Request.Url); builder.Host = "www." + Request.Url.Host; Response.StatusCode = 301; Response.AddHeader("Location", builder.ToSsortingng()); Response.End(); } }
Vous pouvez utiliser pour https et redirection www. (Vous devez changer “exemple”)
Je sais que ce fil est ancien et semble répondre à la mort. Mais il peut être utile d’emballer la suggestion global.asax de tout le monde en vérifiant si vous travaillez localement ou non. Ainsi, lors du développement via IIS Express, votre site ne tentera pas de redirect vers un sous-domaine «www».
Quelque chose dans la lignée de:
protected void Application_BeginRequest( object sender, EventArgs e) { if (!Request.IsLocal) { // Do your check for naked domain here and do permanent redirect } }