Htaccess genérico redireciona www para não-www

Eu gostaria de redirect www.example.com para example.com . O seguinte código de htaccess faz isso acontecer:

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

Mas, existe uma maneira de fazer isso de maneira genérica sem codificar o nome de domínio?

     RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

    O mesmo que o de Michael, exceto que este funciona: P

    Mas se precisarmos fazer isso para http e https separados:

     RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] 

    Redirecionar não-www para www (ambos: http + https)

     RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] 

    Se você quiser fazer isso no arquivo httpd.conf, você pode fazer isso sem mod_rewrite (e aparentemente é melhor para performance).

      ServerName www.example.com Redirect 301 / http://example.com/  

    Recebi a resposta aqui: https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507

    Aqui estão as regras para redirect um URL www para não-www:

     ######################### # redirect www to no-www ######################### RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] RewriteRule ^(.*) http://%1/$1 [R=301,NE,L] 

    Aqui estão as regras para redirect um URL não-www para www:

     ######################### # redirect no-www to www ######################### RewriteCond %{HTTP_HOST} ^(?!www\.)(.+) [NC] RewriteRule ^(.*) http://www.%1/$1 [R=301,NE,L] 

    Observe que usei o sinalizador NE para impedir que o apache escape da string de consulta. Sem esse sinalizador, o apache alterará o URL solicitado http://www.example.com/?foo%20bar para http://www.example.com/?foo%2250bar

     RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^/(.*)$ http://%1/$1 [R] 

    O RewriteCond captura tudo na variável HTTP_HOST após o “www”. e salva em% 1. O RewriteRule captura o URL (sans leading “/”) e o salva em $ 1.

    Tente isto:

     RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteRule ^(.*)$ %{HTTP_HOST}$1 [C] RewriteRule ^www\.(.*)$ http://$1 [L,R=301] 

    Se o host começar com www, colocamos todo o host no início do URL e, em seguida, retiramos o “www”.

    Pode haver muita desinformação por aí sobre redirecionamentos de htaccess, eu acho. Primeiramente, verifique se o seu site está sendo executado no Unix usando o Apache e não em um host do Windows se você espera que esse código funcione.

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

    (Verifique se não há espaços de linha entre cada linha de texto, no entanto, eu adicionei um espaço extra entre as linhas para que fique bem nesta janela.)

    Esse é um snippet de código que pode ser usado para direcionar a versão www do seu site para a versão http: //. Existem outros códigos similares que podem ser usados ​​também.

    Manipulador genérico de WWW completo, http / https

    Eu não vi uma resposta completa. Eu uso isso para lidar com a inclusão da WWW.

    1. Genérico. Não requer informações de domínio.
    2. Força WWW no domínio principal: http://www.domain.com
    3. Remove WWW em subdomínios: sub.domain.com
    4. Preserva o status HTTP / HTTPS.
    5. Permite cookies individuais para domínio / subdomínios

    Por favor, deixe-me saber como isso funciona ou se eu deixei uma brecha.

     RewriteEngine On RewriteBase / # Force WWW. when no subdomain in host RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC] RewriteCond %{HTTPS}s ^on(s)|off [NC] RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # Remove WWW. when subdomain(s) in host RewriteCond %{HTTP_HOST} ^www\. [NC] RewriteCond %{HTTPS}s ^on(s)|off [NC] RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)(.+\.)(.+\.)(.+)$ [NC] RewriteRule ^ %1%3%4%5%{REQUEST_URI} [R=301,L] 
     RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/subfolder/$1 [R=301,L] 

    Para subpasta

    Para aqueles que precisam acessar todo o site sem o prefixo ‘www’.

     RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] 

    É claro que você adiciona isso ao seguinte arquivo

     /site/location/.htaccess 

    www para não www com https

     RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

    use: Javascript / jQuery

     // similar behavior as an HTTP redirect window.location.replace("http://www.stackoverflow.com"); // similar behavior as clicking on a link window.location.href = "http://stackoverflow.com"; 

    Ou. Htaccess:

     RewriteEngine On RewriteBase / Rewritecond %{HTTP_HOST} ^www\.yoursite\.com$ [NC] RewriteRule ^(.*)$ https://yoursite.com/$1 [R=301,L] 

    e o método PHP:

     $protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://"; if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') { header('Location: '.$protocol.'www.'.$_SERVER ['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']); exit; } 

    Ajax

     $.ajax({ type: "POST", url: reqUrl, data: reqBody, dataType: "json", success: function(data, textStatus) { if (data.redirect) { // data.redirect contains the string URL to redirect to window.location.href = data.redirect; } else { // data.form contains the HTML for the replacement form $("#myform").replaceWith(data.form); } } }); 

    Eu usei a regra acima para navegar www para não www e funciona bem para a página inicial, no entanto, nas páginas internas que eles estão encaminhando para /index.php

    Eu encontrei esta outra regra no meu arquivo .htaccess que está causando isso, mas não sei o que fazer sobre isso. Qualquer sugestão seria ótima:

     ############################################ ## always send 404 on missing files in these folders RewriteCond %{REQUEST_URI} !^/(media|skin|js)/ ############################################ ## never rewrite for existing files, directories and links RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l ############################################ ## rewrite everything else to index.php RewriteRule .* index.php [L] 

    Não tenho certeza porque você deseja remover www. Mas a versão reversa seria:

     # non-www.* -> www.*, if subdomain exist, wont work RewriteCond %{HTTP_HOST} ^whattimein\.com RewriteRule ^(.*)$ http://www.whattimein.com/$1 [R=permanent,L] 

    E a vantagem deste script é: se você tiver algo como test.whattimein.com ou qualquer outro (ambiente para desenvolvimento / teste), ele não redirectá U para o ambiente original.

    A única maneira de fazer isso funcionar …

     RewriteEngine On RewriteCond %{HTTP_HOST} ^site\.ro RewriteRule (.*) http://www.site.ro/$1 [R=301,L] 

    Se você está forçando www. em url ou forçar prototcol ssl, tente usar possíveis variações no arquivo htaccess, como:

     RewriteEngine On
     RewriteBase /
    
     ### Forçar WWW ###
    
     RewriteCond% {HTTP_HOST} ^ example \ .com
     RewriteRule (. *) Http://www.example.com/$1 [R = 301, L]
    
     ## Force SSL ###
    
     RewriteCond% {SERVER_PORT} 80 
     RewriteRule ^ (. *) $ Https://example.com/$1 [R, L]
    
     ## Block IP's ###
     Ordem Negar, Permitir
     Negar de 256.251.0.139
     Negar a partir de 199.127.0.259
    
     RewriteEngine on # if host value starts with "www." RewriteCond %{HTTP_HOST} ^www\. # redirect the request to "non-www" RewriteRule ^ http://example.com%{REQUEST_URI} [NE,L,R] 

    Se você quiser remover www em http e https , use o seguinte:

     RewriteEngine on RewriteCond %{HTTP_HOST} ^www\. RewriteCond %{HTTPS}s ^on(s)|offs RewriteRule ^ http%1://example.com%{REQUEST_URI} [NE,L,R] 

    Isso redireciona o Non ssl

    para

    E SSL

    para

    no apache 2.4.* você pode fazer isso usando uma diretiva Redirect with if ,

      Redirect / http://example.com/  

    A resposta selecionada e muitas outras soluções aqui caiu a parte da URL depois /, então basicamente ele sempre redirecionado para o domínio principal, pelo menos para mim .. Então eu estou adicionando amostra de trabalho respeitando o caminho completo após a barra ..

     RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [L,R=301] 

    Isso é atualizado para funcionar no Apache 2.4:

     RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [R=301,L] 

    A única mudança em relação a Michael é remover o [NC] , que produz o erro “AH00665”:

    A opção NoCase para padrão não-regex ‘-f’ não é suportada e será ignorada

    Oi você pode usar as seguintes regras no seu arquivo htaccess:

     RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com RewriteRule (.*) http://www.example.com/$1 [R=301,L]