Eu tenho um servidor dedicado com Apache, no qual configurei alguns VirtualHosts. Eu configurei um para lidar com o domínio www e também com 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 a mesma DocumentRoot
e usando, .htaccess
mas tenho certeza de que devo fazê-lo no arquivo VirtualHost.
apache-2.2
mod-rewrite
redirect
virtualhost
DisgruntledGoat
fonte
fonte
Respostas:
Acontece que as
mod_rewrite
regras são boas no arquivo VirtualHosts, além daRewriteBase
regra. Eu acabei com isso:EDIT: no conselho de joschi nos comentários, agora estou usando esta versão simplificada usando a
Redirect
diretiva demod_alias
:fonte
:80
after,VirtualHost *
faz com que tudo retorne "Proibido"!Tenha muito cuidado com os redirecionamentos 301, porque, por padrão, um navegador que recebe o redirecionamento 301 o armazenará permanentemente - o que significa que você deixará de controlar o que o navegador verá ao 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, verifique se ele não é armazenado em cache ou use mod_proxy (eu recomendo o mod_proxy).
Se você não permitir que o usuário veja a alteração do URL na barra de endereço do navegador, use mod_rewrite:
Se você deseja que o "redirecionamento" fique invisível para o usuário, use mod_proxy:
Note-se que mod_proxy, quando mal configurado, pode prejudicar sua rede.
fonte
Você pode adicionar
ServerAlias example.com
ao,VirtualHost
mas o desempenho será diferente de um redirecionamento.Editar
Como você deseja redirecionar e não precisa de funcionalidade avançada, parece que o uso
Redirect
deve ser suficiente para você. Você colocaria aRedirect
sob uma diretiva VirtualHost.Uma solução do lado do cliente seria usar uma
meta refresh
tag.fonte
www.example.com
paraexample.com
usar esse método?ServerName
eServerAlias
. Um tem example.com e o outro www.example.com. Em seguida, as duas entradas DNS acessarão os documentos especificados no mesmo vhost.bem, você pode criar um host virtual para o SERVERNAME www.example.com e redirecioná-lo para outro host virtual com o nome do servidor exemplo.com
fonte