http_host for examples xml url-rewriting iis-7

xml - for - Reescritura de URL de IIS7: agregue el prefijo "www"



url rewrite iis install iis 8 (4)

Esta es una muestra de Microsoft para URL Rewrite Module 2.0 que redirige * .fabrikam.com a www.fabrikam.com

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Add www" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions> <add input="{HTTP_HOST}" pattern="www.fabrikam.com" negate="true" /> </conditions> <action type="Redirect" url="http://www.fabrikam.com/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

¿Cómo obligar a example.com a ser redirigido a www.example.com con reescritura de URL en IIS7? ¿Qué tipo de regla debe entrar en la web.config? Gracias.


No estoy seguro de la mejor manera posible de hacer esto, pero tengo un sitio con todos los dominios / subdominios antiguos que ejecutan este web.config:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Transfer" stopProcessing="true"> <match url=".*" /> <action type="Redirect" url="http://www.targetsite.com/{R:0}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

Parece que hay que hacer el trabajo.


No estoy seguro de si esto ayuda, pero opté por hacerlo a nivel de la aplicación. Aquí hay un filtro de acción rápida que escribí para hacer esto. Simplemente agregue la clase en algún lugar de su proyecto, y luego puede agregar [RequiereWwww] a una sola acción o un controlador completo.

public class RequiresWww : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpRequestBase req = filterContext.HttpContext.Request; HttpResponseBase res = filterContext.HttpContext.Response; //IsLocal and IsLoopback i''m not too sure on the differences here, but I have both to eliminate local dev conditions. if (!req.IsLocal && !req.Url.Host.StartsWith("www") && !req.Url.IsLoopback) { var builder = new UriBuilder(req.Url) { Host = "www." + req.Url.Host }; res.Redirect(builder.Uri.ToString()); } base.OnActionExecuting(filterContext); } }

Entonces

[RequiresWwww] public ActionResult AGreatAction() { ... }

o

[RequiresWwww] public class HomeController : BaseAppController { .. .. }

Espero que ayude a alguien. ¡Aclamaciones!


Para hacerlo más genérico, puede usar la siguiente regla de Reescritura de URL que funciona para cualquier dominio:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Add WWW" stopProcessing="true"> <match url="^(.*)$" /> <conditions> <add input="{HTTP_HOST}" pattern="^(?!www/.)(.*)$" /> </conditions> <action type="Redirect" url="http://www.{C:0}{PATH_INFO}" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer>