Configuração do Host Virtual Apache www vs não www, Rewrite ou sServerAlias?

5

Temos um httpd.conf central e incluímos confs para vários hosts virtuais. Até hoje, nós realmente não precisávamos dos domínios "www.subdomain.site.com", apenas "subdomain.site.com". Agora, tentamos descobrir qual dessas duas abordagens é melhor:

[1] Use um Rewrite:

    RewriteCond %{HTTP_HOST} ^www.subdomain.site.com
    RewriteRule ^(.*)$ http://subdomain.site.com$1 [R=301]

OR

[2]. Use ServerAlais:

    <VirtualHost 111.22.33.44:80>
    ServerName subdomain.site.com
    ServerAlias www.subdomain.site.com
    Include conf/subdomain.conf
    </VirtualHost>

Eu imagino que haja mais processamento no Rewrite, mas não tenho certeza de como o ServerAlias se comportaria nesse mix. Será que um melhor SEO foo do que o outro?

Todas e quaisquer ideias são bem-vindas!

Obrigado,

KM

    
por KM. 28.06.2010 / 20:06

3 respostas

1

Eu provavelmente faria as duas coisas. Com algo como:

<VirtualHost 111.22.33.44:80>
  ServerName subdomain.site.com

  #Using Wildcard: might as well handle any variation
  #such as ww.subdomain.site.com (remember to set this in DNS too)
  ServerAlias *.subdomain.site.com

  RewriteEngine On

  #Change all variations to the Canonical hostname for SEO.
  RewriteCond %{HTTP_HOST} !^subdomain.site.com [NC]
  RewriteRule ^/(.*)$ http://subdomain.site.com/$1 [R=301]
  Include conf/subdomain.conf 
</VirtualHost>

Nota: a solução de David Zaslavsky acima faz mais ou menos a mesma coisa, mas desta forma você não precisa fazer uma seção VirtualHost separada para cada subdomínio.

    
por 30.06.2010 / 17:05
4

Eu imagino que a solução de reescrita fica melhor SEO-foo (termo legal :-P) já que geralmente é considerado melhor ter um domínio canônico para o qual todo mundo é enviado para um determinado conjunto de conteúdo. Em outras palavras, ter dois domínios diferentes que produzem os mesmos resultados do servidor pode dividir as classificações do seu site entre os dois domínios, reduzindo o valor de cada um deles. (O Google permite que você especifique um domínio canônico usando suas Ferramentas do Google para webmasters, mas isso só funciona no Google)

Acho que você pode usar um Redirect aqui, por exemplo

<VirtualHost *:80>
    ServerName www.subdomain.site.com
    Redirect permanent / http://subdomain.site.com/
</VirtualHost

Isso é menos computacionalmente intensivo do que invocar o mod_rewrite.

    
por 28.06.2010 / 22:44
1

Veja o que funciona para mim:

<VirtualHost *:80>

ServerName www.domain.com
ServerAlias domain.com

# [ snip some unrelated stuff ]

# Redirect secondary hostnames to canonical hostname
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule (.*) http://www.domain.com$1 [R=301,L]

</VirtualHost>

A vantagem de fazer isso em vez do RedirectMatch é que ele redirecionará domínio.com/about-us para www.domain.com/about-us em vez de apenas redirecionar cada solicitação para a home page. Ele também usa um redirecionamento 301, que transfere a classificação do mecanismo de pesquisa de domain.com/about-us para www.domain.com/about-us.

    
por 18.08.2015 / 02:56