mod_vhost_alias VirtualDocumentRoot muchos dominios

mod_vhost_alias VirtualDocumentRoot muchos dominios

Estoy seguro de que no soy la primera persona que se encuentra con este problema, pero por mi vida no puedo encontrar una respuesta, aunque eso podría deberse a no saber qué buscar.

Tengo la necesidad de alojar muchos sitios web de clientes en un servidor Ubuntu. Todo funciona bien, pero quiero configurar hosts virtuales dinámicos para poder automatizar el proceso de creación de un sitio de WordPress en el servidor. Tengo mod_vhost_aliasel módulo funcionando y estoy satisfecho con eso, sin embargo, tuve un problema con .comdominios versus .co.ukdominios .com.auy elVirtualDocumentRoot

Para un dominio como example.comquiero que todas las solicitudes www.exapmple.comapunten example.coma un directorio llamado algo así como /var/webroot/example.comy para dominios como example.co.uk, me gustaría que todas las solicitudes www.example.co.ukapunten example.co.uka un directorio llamado/var/webroot/example.co.uk

El VDR que tengo en este momento se ve así...

VirtualDocumentRoot /var/webroot/%-2.0.%-1.0

Que ocupa la penúltima y última parte. Esto funciona muy bien, example.compero example.co.ukbusca un directorio en /var/webroot/co.uk, ¡lo cual no es ideal!

¿Hay alguna forma de evitar esto? ¿Necesito usarlo mod_rewritey, de ser así, cómo?

Respuesta1

Este es un caso en el que simplemente dividiría los enlaces simbólicos en lugar de usar uno muy específico (y potencialmente frágil) RewriteRule:

Utilice VirtualDocumentRoot /var/webroot/%0y luego /var/webroot/cree un enlace simbólico para www.example.comapuntar al directorio real de example.com. Esto funcionará con dominios sin importar la profundidad que necesites, además de ser un poco más flexible si tienes un sitio donde wwwdebería tener contenido diferente por algún motivo, o quieres apuntar aaa.example.comal mismo contenido que example.com.

Si eso no es de tu agrado, entonces puedes usar mod_rewrite:

DocumentRoot /var/webroot
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^/(.*)$ /%2/$1

Eso siempre buscará el nombre de dominio en /var/webroot, arrancando el wwwfrente si está allí antes de mirar.

Como alternativa, también puedes redirigir para eliminar (o agregar) wwwa todas las solicitudes en lugar de ofrecer el mismo contenido para ambos dominios.

información relacionada