¿Cómo forzar a example.com a ser redirigido a www.example.com con la reescritura de URL en IIS7? ¿Qué tipo de regla debería ir a la web.config? Gracias.Reescritura de URL IIS7 - Agregue el prefijo "www"
Respuesta
Esta es la 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>
No está seguro acerca de la mejor manera posible para hacer esto, pero tengo un sitio con todos los viejos dominios/subdominios que maneja 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 hacer el trabajo.
¿Esto no redirigiría automáticamente todas las solicitudes que llegan a su servidor? Esperaría que sus clientes, si inspeccionaban su tráfico, vieran un 301 por cada solicitud. – LeRoy
con un año de retraso para responder a su comentario, pero tengo una aplicación iis para www.targetsite.com y otra que responde a los dominios que deseo reenviar. si una aplicación aloja ambas, por supuesto es necesario tener una condición. – Sciolist
Para que sea más genérico puede utilizar siguiente regla de reescritura de URL, que trabaja 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>
Funciona siempre que no tenga subdominios. – jpkeisala
no estoy seguro de si esto ayuda, pero he optado por hacer esto a nivel de 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 [RequiresWwww] a una sola acción o a 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
{
..
..
}
la esperanza de que ayude a alguien. ¡Aclamaciones!
Estoy seguro de que esto funciona pero el sucky problema con esto es que si necesita desactivar SSL de IIS ... bueno ... no puede. Esto para mí es necesario para obtener un nuevo certificado de let encrypt por ejemplo, solo una rápida reescritura, obtener certs, volver a encender. De esta manera necesito volver a publicar. Esto no es muy polimórfico y se considera una mala práctica. – ppumkin
- 1. Reescritura de URL en IIS7 para Wordpress
- 2. Reescritura de URL con Joomla en IIS7
- 3. Reescritura de URL https: // http: // en IIS7
- 4. Módulo de reescritura de Microsoft - Forzar www en la url O eliminar www de la url
- 5. Reescritura de URL de IIS7: ¿Cómo no eliminar el protocolo HTTPS de la URL reescrita?
- 6. Nginx reescritura de dominio prefijado la no-www al dominio www-prefijo
- 7. Eliminar el prefijo WWW de su sitio web
- 8. ASP.NET/IIS7 Los mapas de reescritura de URL no funcionan
- 9. Mis reglas de reescritura de URL de IIS7 siguen desapareciendo
- 10. URL IIS7 Reescritura de dominio diferente, coincidencia exacta
- 11. Usar la reescritura de URL de IIS7 para redirigir todas las solicitudes
- 12. ¿Cómo redirigir con "www" URL sin URL "www" o viceversa?
- 13. cómo sé qué versión del módulo de reescritura de URL de IIS7 está instalado
- 14. .htaccess desafío de reescritura de URL
- 15. Reescritura de URL de Codeigniter
- 16. Cómo corregir la reescritura de URL para enlaces dentro de archivos CSS con IIS7
- 17. Captura de un valor en una cookie usando Reescritura de URL para IIS7
- 18. Mover la sección de reescritura de URL IIS7 fuera del archivo web.config
- 19. Reescritura de URL de ASP.NET
- 20. Reescritura de URL - error web.config
- 21. Agregue automáticamente el subdominio "www" para mi webapp
- 22. Redirigir URL que no sea www a www usando .htaccess
- 23. ¿Cómo redirigir a la raíz de la aplicación utilizando el módulo de reescritura de URL de IIS7?
- 24. Problema de reescritura de URL con Mango Blog (error 404)
- 25. cakephp no funciona url-reescritura en Ubuntu
- 26. Reescritura de URL para diferentes protocolos en .htaccess
- 27. Html.TextBoxFor, agregue el nombre del modelo como prefijo a Identificación
- 28. de reescritura de URL - Retirar extensión .html
- 29. Reescritura de URL con asp.net. ¿Hay alguna configuración necesaria?
- 30. Amazon S3 de reescritura de URL
duplicado de http://stackoverflow.com/questions/1476934/forwarding-http-mydomain-com-ctrlr-act-val-to-http-www-mydomain-com-ctrlr-act/1476986#1476986 –
Por qué tiene que ser reescritura de URL? ¿Por qué no el enfoque tradicional: crear un host virtual vinculado a 'example.com' que da un simple 'HTTP Redirect' a' http: // www.example.com/'(con código de estado 301, y sin el 'destino exacto' 'opción, por lo que la ruta se mantiene intacta). – bobince
Creo que es más lógico incluir este comportamiento dentro de la aplicación en sí, en lugar de crear otro para admitirlo. Pero de lo contrario, probablemente no haya ninguna diferencia, ¿o no? – niaher