2009-02-09 6 views
8

Ho un VirtualHost che sembra qualcosa di simile:Come reindirizzare dinamicamente gli URL www-based a URL non www con più domini nella stessa VirtualHost

<VirtualHost *:80> 

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

</VirtualHost> 

Quando un utente visita www.domain1.com/test , dovrebbero essere reindirizzati a:

domain1.com/test 

Quando un utente visita www.domain2.com/test, dovrebbero essere reindirizzati a:

domain2.com/test 

Mancano le mie RewriteRules correnti.

Edit: Ecco quello che ho finora:

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

Ovviamente, questo genera un loop di reindirizzamento infinito.

risposta

6

Il tuo RewriteCond è un po 'confuso. Sono sorpreso che faccia qualsiasi cosa, dal momento che sembra che stia cercando di abbinare l'host www.domain1.com al pattern www\.www.domain1.com. Queste direttive hanno funzionato per me:

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

Perfetto, grazie! –

10

Nessuna necessità di riscrittura.

<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

Questo reindirizzerà tutto il traffico verso domain1.com, ho bisogno che il traffico rimanga sui rispettivi siti, rimuovendo il "www". –

+0

Va bene, aggiornato - il modello è lo stesso, ovviamente. – bobince

+0

Non credo che manterrà la struttura dell'URL, vero? Supponevo che www.domain2.com/test1 reindirizzasse a http://domain2.com, piuttosto che al http://domain2.com/test1 desiderato. –

0

È possibile avere più VirtualHosts in un file di configurazione, così si dovrebbe cambiare la vostra configurazione a questo:

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

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

È possibile aggiungere un altro VirtualHost per ogni dominio che si vuole fare.

+0

Questo semplicemente imposta alias per ogni dominio, non reindirizza il traffico da www.dominio1.com a dominio1.com. –