.htaccess - redireciona não www para www e retém subdomínios do redirecionamento [duplicado]

3

Então, no meu domínio principal 'domain.com' eu criei vários subdomínios do cPanel, como 'sub1.domain.com' e 'sub2.domain.com'. Sua localização real no servidor está em 'domain.com/sub1' e 'domain.com/sub2'.

Agora, quero redirecionar o não www para o www, com o .htaccess, e é isso que atualmente tenho:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>

Isso funciona. Quando alguém entra em domínio.com, ele será redirecionado para www.domain.com. No entanto, quando alguém digitar sub1.domain.com, ele será redirecionado para www.domain.com/sub1 - o que eu não quero, ele precisa estar em sub1.domain.com.

O que devo adicionar no arquivo .htaccess para fazer isso?

    
por RhymeGuy 23.05.2012 / 15:37

2 respostas

5

Você pode excluir cada sub1 , sub2 individualmente assim;

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_HOST} ^sub1\.domain\.com [NC]
RewriteRule ^(.*) - [L]

RewriteCond %{HTTP_HOST} ^sub2\.domain\.com [NC]
RewriteRule ^(.*) - [L]

RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>

Ou apenas especifique que você deseja redirecionar apenas domain.com para www.domain.com com o RewriteCond

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>
    
por 23.05.2012 / 15:53
1
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Isso funciona para todos os domínios, excluindo os subdomínios. divirta-se.

    
por 31.03.2016 / 09:21