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:
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.
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
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.
18 comments
Olá, utilizei seu código e redirecionou correto, só que redireciona apena o site limpo. Ex. quando digito http://www.site.com.br redecireciona para site.com.br. E quando digito http://www.site.com.br/pagina-qualquer não redireciona e da erro 404 e mostra na url a pagina com http://www.site.com.br/index.php?url=pagina-qualquer
Victor, certamente é porque você tem mais de uma regra. Se quiser colar elas ai, eu dou uma olhada pra voce.
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
Samuel, com Zend nao rola.
Olá!
Gostaria de saber porque o meu não funciona..
O .htaccess está na raíz na seguinte forma:
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
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.
Matheus, voce conferiu se o seu RewriteEngine esta ligado? Remova essa ErrorDocument
Juan, no blogger nao é possivel. Funcionando apenas para hospedagens com servidores web rodando Apache.
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]
Victor, o codigo esta correto. ~E so tratar o GET da URL agora. Não vi problema algum.
Muito bom a dica para remover o www! Vlw
Diogo,
Funciona no Zend 2 Sim! Estou utilizando o código.
Obrigado!
Funcionou supimpa!!!!
insidedecordf.com.br
Valeu!
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.?
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.
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.
Boa tarde … Quando uso o
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule (.*) http://%1/$1 [R=301,L]
O http://www.meusite.com.br passa pra http://meusite.com.br/public_h… e é direcionado para File not found (404 error)
Como resolvo por favor?
Deve ser erro do seu PHP ou backend, de onde ele tirou esse public_html ai?