Tenho um servidor dedicado com Apache, no qual configurei alguns VirtualHosts. Eu configurei um para lidar com o domínio www, bem como o domínio não www.
Meu arquivo VH .conf para o www:
<VirtualHost *>
DocumentRoot /var/www/site
ServerName www.example.com
<Directory "/var/www/site">
allow from all
</Directory>
</VirtualHost>
Com isso .htaccess
:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Existe uma maneira simples de redirecionar o www para a versão não www? Atualmente estou enviando as duas versões para o mesmo DocumentRoot
e usando .htaccess
mas tenho certeza que devo conseguir fazer isso no arquivo VirtualHost.
Acontece que as
mod_rewrite
regras estão bem no arquivo VirtualHosts, além daRewriteBase
regra. Acabei com isso:EDIT: seguindo o conselho de joschi nos comentários, agora estou usando esta versão simplificada usando a
Redirect
diretiva demod_alias
:Tenha muito cuidado com os redirecionamentos 301 porque, por padrão, um navegador que recebe o redirecionamento 301 irá armazená-lo permanentemente - o que significa que você perderá o controle do que esse navegador verá quando tentar acessar o domínio
www.example.com
.Veja por exemplo esta discussão http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/
Portanto, certifique-se de que não seja armazenado em cache ou use mod_proxy (recomendo o mod_proxy).
Se você concorda em deixar o usuário ver a mudança de URL na barra de endereço do navegador, use mod_rewrite:
Se você quiser que o "redirecionamento" seja invisível para o usuário, use mod_proxy:
Vale ressaltar que o mod_proxy, quando mal configurado, pode prejudicar sua rede.
Você pode adicionar
ServerAlias example.com
aoVirtualHost
mas o desempenho será diferente de um redirecionamento.Editar
Como você deseja redirecionar e não precisa de funcionalidades avançadas, parece que o uso
Redirect
deve ser suficiente para você. Você colocaria oRedirect
sob uma diretiva VirtualHost.Uma solução do lado do cliente seria usar uma
meta refresh
tag.bem, você pode criar um host virtual para o SERVERNAME www.example.com e redirecioná-lo para outro host virtual com o servername example.com