2009-02-09 10 views
8

Tengo un host virtual que se ve algo como:cómo redirigir dinámicamente direcciones URL basadas en WWW para URLs sin www con múltiples dominios en la misma VirtualHost

<VirtualHost *:80> 

    ServerName domain1.com 
    ServerAlias www.domain1.com domain2.com www.domain2.com 

</VirtualHost> 

Cuando alguien visita www.domain1.com/test , deben ser redirigidos a:

domain1.com/test 

Cuando alguien visita www.domain2.com/test, deben ser redirigidos a:

domain2.com/test 

Mi actual RewriteRules falta.

Editar: Esto es lo que tengo hasta ahora:

# Rewrite www to non-www 
RewriteEngine on 
RewriteCond %{HTTP_HOST} www\.%{HTTP_HOST}$ [NC] 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301] 

Obviamente, esto genera un bucle de redireccionamiento infinito.

Respuesta

6

Su RewriteCond es un poco vago. Me sorprende que haga algo, ya que parece estar intentando hacer coincidir el host www.domain1.com con el patrón www\.www.domain1.com. Estas directivas funcionaron para mí:

# Redirect www to non-www 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1$1 [L,R=301] 
+0

Perfecto, gracias! –

10

No es necesario reescribir.

<VirtualHost *:80> 
    ServerName domain1.com 
    ServerAlias domain2.com 
    ... real vhost settings ... 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.domain1.com 
    Redirect permanent/http://domain1.com/ 
</VirtualHost> 
<VirtualHost *:80> 
    ServerName www.domain2.com 
    Redirect permanent/http://domain2.com/ 
</VirtualHost> 
+0

Esto redireccionará todo el tráfico a domain1.com, necesito que el tráfico permanezca en sus sitios respectivos, mientras elimino el 'www'. –

+0

Muy bien, actualizado: el patrón es el mismo, por supuesto. – bobince

+0

No creo que esto retenga la estructura de URL, ¿o sí? Supongo que www.domain2.com/test1 redirigiría a http://domain2.com, en lugar de al http://domain2.com/test1 –

0

Puede tener varias VirtualHosts en un archivo de configuración, por lo que debe cambiar su configuración para esto:

<VirtualHost *:80> 
    ServerName domain1.com 
    ServerAlias www.domain1.com 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName domain2.com 
    ServerAlias www.domain2.com 
</VirtualHost> 

puede agregar otro VirtualHost para cada dominio que desea hacer.

+0

Esto simplemente configura alias para cada dominio, no redirecciona el tráfico de www.domain1.com a domain1.com. –

Cuestiones relacionadas