Adicionando ou Removendo o WWW da URL com .htaccess

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

Para inicio de conversa é necessário saber o que é o htaccess e suas possibilidades, então recomendo a leitura em:
http://httpd.apache.org/docs/1.3/howto/htaccess.html

O que vamos fazer a seguir é adicionar o www. no inicio do dominio caso ele não seja digitado pelo usuário, por exemplo:

Usuario digita: mepergunte.com

O htaccess converte para: www.mepergunte.com

Para isso, basta editar (ou criar) o arquivo .htaccess na raiz do seu dominio com o seguinte código:

1
2
3
4
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.mepergunte.com/$1 [R=301,L]

Altere no código acima o domínio, para onde será feito o redirecionamento, inclusive colocando a ultima linha com um diretorio qualquer.

1
RewriteRule (.*) http://www.mepergunte.com/site/$1 [R=301,L]

Agora vamos fazer o processo inverso, que inclusive é o meu favorito.

Veja como remover o www. do seu domínio automaticamente utilizando .htaccess

1
2
3
4
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule (.*) http://%1/$1 [R=301,L]

Basicamente so altera a linha 3 e 4, ja que as duas primeiraas so ativam e setam opções que serão utilizadas no código.

A linha 3 é a condição e a linha 4 o que será executada caso a condição seja válida.

Bom, acho que é isso. Aproveitando o post, algumas dicas bacanas para .htacess você pode encontrar no site Htaccess Tools, como detecção de navegação por iPhone, redirecionamentos, sistema de senhas, etc.

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather

18 comentários sobre “Adicionando ou Removendo o WWW da URL com .htaccess

  1. então…
    tenho um site com nenhum .htaccess na raiz, mas em uma pasta específica que é em zend tem um .htaccess assim:

    SetEnv APPLICATION_ENV development

    RewriteEngine On
    RewriteRule .* index.php

  2. Olá!
    Gostaria de saber porque o meu não funciona..

    O .htaccess está na raíz na seguinte forma:

    1
    2
    3
    4
    5
    6
    RewriteEngine On
    RewriteBase /
    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} ^www\.(.*)
    RewriteRule (.*) http://%1/$1 [R=301,L]
    ErrorDocument 404 /error404.php

    Não funciona… Quando digita-se ‘site.com’ abre normalmente, mas quando digita-se ‘www.site.com’ dá erro 404. Eu quero tirar esse www e redirecionar para sem o http://www...

    Muito obrigado

  3. então cara, eu quero usar a 1ª opção, pra quando a pessoa digita meu site sem o ‘www” mesmo assim redirecionar pro meu site. como eu faço pra criar o arquivo htaccess e colocar no blogger? vc disse q tem q colocar na raiz do dominio, e eu nem sei o que é isso. se vc puder me ajudar eu vou ficar muito grato.

  4. Matheus, voce conferiu se o seu RewriteEngine esta ligado? Remova essa ErrorDocument

  5. Juan, no blogger nao é possivel. Funcionando apenas para hospedagens com servidores web rodando Apache.

  6. E ai Diogo, segue o código com problema, utilizei seu código e redirecionou correto, só que redireciona apenas o site sem passar nenhum valor na url.. Ex. quando digito www/site/com/br redireciona para site/com/br E quando digito www/site/com/br/pagina-qualquer redireciona e mostra na url a pagina com site/com/br/index.php?url=pagina-qualquer/
    RewriteEngine On
    SetOutputFilter DEFLATE
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(!.(\.gif|\.jpg|\.png|\.swf|\.css|\.js|\.txt|\.php|\.htm|\.html)|.+[^/])$ /$1/ [R=301,NC]
    RewriteRule ^(.[^.*]+)\/$ ?jogar=$1 [NC]
    Options -Indexes
    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http:\/\/%1%{REQUEST_URI} [R=301,QSA,NC,L]

  7. Victor, o codigo esta correto. ~E so tratar o GET da URL agora. Não vi problema algum.

  8. Diogo,

    Funciona no Zend 2 Sim! Estou utilizando o código.

    Obrigado!

  9. Boa tarde será que você poderia dar uma ajuda?
    Meu .htaccess está assim:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1

    Seguinte, está tudo perfeito, tudo funcionando só que além das páginas normais que tenho do site tipo:
    sobre, produtos, contato tenho uma página personalizada para cada cliente de uma parceria que tenho.

    Nesta página de parceria tenho o css, js, images próprio dela. Quando chamo o link na home ex: <a class="btn btn-default btn-sm" href="/parceiro-exemplo.php” target=”_blank”>Veja mais »

    Está me abrindo a página trazendo junto o header.php e footer.php, teria alguma coisa a fazer para resolver isso? Ou direto na página ou no .htaccess ?

    Desde já obrigado pela atenção.?

  10. Boa noite Diogo, estou com um problema no site do meu cliente (ravansolutions.com). Ao digitar o endereço que comentei sem o “www.” o site funciona perfeitamente, clico na A Empresa e ele desce automaticamente, assim como em Produtos e Contato. Porém quando digito “www.ravansolutions.com” o site abre, mas quando clico em A Empresa, Produtos e Contato, o deslize automático para de funcionar somem alguns ícones do site e em produtos ele não abre. Mas quando clico em “Tabelas” ou “Certificação” e depois volto clico em “Home”, ele retira automaticamente o “www.” do início do endereço e passa a funcionar corretamente.
    Tentei colocar as linhas de código que vc menciona no .htacces, mas não obtive sucesso, meu .htacces está assim:
    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress
    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    Cara.., realmente não sei como resolver isso, se puder me ajudar, ficarei muito grato.
    Att.

  11. Anderson, no seu caso esta simples. Nada a ver tem com o htaccess. É so o link mesmo que ta com o endereço completo. Tenta recuperar qual URL atual esta, com ou sem www, e coloca elas tambem no MENU. Isso resolve seu problema.

  12. Deve ser erro do seu PHP ou backend, de onde ele tirou esse public_html ai?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Prove que você não é um robo *