Como redirecionar vários domínios para “www.” com a diretiva “Redirect” mod_alias?

1

Estou tentando redirecionar vários VirtualHosts sem precedê-los "www." de um VirtualHost para outro, assim:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias example.org
    ServerAlias example.net
    # I either need some kind of Apache conditional here...
    Redirect 301 / http://www.example.com/
    # ... or I need to substitute the Redirect *URL* with a variable
    # for the ServerName/ServerAlias
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
</VirtualHost>

Eu poderia apenas criar vários containers do VirtualHost e redirecionar cada um individualmente, mas eu prefiro não repetir meu código, se possível.

Estou usando o Apache 2.2 e prefiro não usar mod_rewrite para redirecionar. Eu sou justo com o Apache, mas longe de ser um especialista.

    
por Jeff 16.10.2012 / 19:43

3 respostas

0

A solução que usei não é "Don't Repeat Yourself" amigável, mas funciona e ajuda-me a alcançar a minha preferência de não usar o mod_rewrite. Quaisquer soluções melhores e eu vou felizmente marcar sua resposta.

<VirtualHost *:80>
    ServerName example.com
    Redirect 301 / http://www.example.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName example.org
    Redirect 301 / http://www.example.org/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    ServerName www.example.org
</VirtualHost>
    
por 16.10.2012 / 21:13
1

Eu escrevi a seguinte condição que estou usando em um arquivo .htaccess para redirecionar qualquer domínio sem o "www", este trabalho para qualquer nome de domínio. A aparência do domínio pode ser mais abrangente, por exemplo, eu só procuro números, letras e sublinhados no nome de domínio, pois sei que todos os domínios onde essa regra se aplicará terão exatamente isso, mas você pode facilmente substituir a expressão regular por um mais complexo se você precisar.

  RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9-_]*)\.([a-zA-Z0-9]{2,3})$ [NC]
  RewriteRule ^(.*)$ http://www.%1.%2/$3 [L,R=301]
    
por 16.10.2012 / 19:49
0

assumindo que todos vão para um host virtual, eu faria isso:

<VirtualHost *:80>
   ServerName _default_:80
   Redirect / http://www.example.com/
</VirtualHost>

<VirtualHost *:80>
   ServerName www.example.com
   DocumentRoot /var/www/html/
</VirtualHost>

* UPDATE *

Talvez isso ajude você? Módulo Apache 2.4 mod_macro 1.2.1

    
por 16.10.2012 / 21:22