<VirtualHost ip:80>
ServerName domain.com
RedirectMatch permanent ^(.*)$ http://www.domain.com$1
</VirtualHost>
<VirtualHost ip:80>
ServerName www.domain.com
... usual config
</VirtualHost>
Eu quero garantir que os usuários cheguem a www.mydomain.com
, mesmo que cheguem pelo alias mydomain.com
. Isso é para que eu tenha controle sobre cookies em subdomínios e para que o Google veja um único domínio e não uma miscelânea de URLs.
Como posso fazer isso com o apache?
Adicione isso ao seu arquivo httpd.conf
:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
Ative o suporte a mod_rewrite e crie um arquivo .htaccess na pasta raiz do seu domínio com o seguinte conteúdo:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</IfModule>
Se você realmente quiser que o Google use um estilo de domínio específico (com ou sem www ), crie um Ferramentas do Google Webmaster Tools , verifique a propriedade do seu domínio (envie um arquivo) e defina o seu domínio preferido usando o painel de controle on-line.
É simples assim, e você não precisa alterar nenhum código do lado do servidor; também os links de entrada com ou sem www serão tratados da mesma forma, aumentando o PageRank de suas páginas.
Links may point to your site using both the www and non-www versions of the URL (for instance, http://www.example.com and http://example.com). The preferred domain is the version that you want used for your site in the search results.
Once you tell us your preferred domain name, we'll take your preference into account when displaying the URLs. It may take some time before you see this change fully reflected in our index.
If you don't specify a preferred domain, we may treat the www and non-www versions of the domain as separate references to separate pages.
Eu tive o problema oposto, as pessoas indo para www.domain.com quando eu quero apenas servir diretamente do domínio.com:
<VirtualHost *:80>
ServerName domain.com
... usual config
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain.com
ServerAlias sub.domain.com # can also catch some other subdomains
ServerAlias *.domain.com # or all previously unmatched domains
Redirect permanent / http://domain.com/
</VirtualHost>
Como Greg Hewgill mencionou, usar o Redirect é um pouco mais simples que o RedirectMatch e faz o mesmo trabalho, consulte link para mais detalhes.
Tags redirect url apache-2.2 rewrite