Htaccess genérico redirige www a no www

Me gustaría redirigir www.example.com a example.com . El siguiente código htaccess hace que esto suceda:

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

Pero, ¿hay alguna manera de hacer esto de forma genérica sin codificar el nombre de dominio?

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

Lo mismo que Michael, excepto que este funciona: P

Pero si tenemos que hacer esto para http y https por separado:

 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] 

Redirigir no www a 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] 

Si desea hacer esto en el archivo httpd.conf, puede hacerlo sin mod_rewrite (y aparentemente es mejor para el rendimiento).

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

Obtuve esa respuesta aquí: https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507

Estas son las reglas para redirigir una URL www a no-www:

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

Estas son las reglas para redirigir una URL que no sea www a www:

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

Tenga en cuenta que utilicé el indicador NE para evitar que apache escape la cadena de consulta. Sin esta marca, apache cambiará la URL solicitada http://www.example.com/?foo%20bar a http://www.example.com/?foo%2250bar

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

RewriteCond captura todo en la variable HTTP_HOST después de “www”. y lo guarda en% 1. RewriteRule captura la URL (sin encabezado “/”) y la guarda en $ 1.

Prueba esto:

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

Si el host comienza con www, colocamos todo el host en el inicio de la URL y luego quitamos el “www”.

Puede haber mucha información errónea sobre los redireccionamientos de htaccess, creo. Primero, asegúrese de que su sitio se ejecute en Unix usando Apache y no en un host de Windows si espera que este código funcione.

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

(Asegúrate de que no haya espacios de línea entre cada línea de texto, he agregado un espacio extra entre las líneas para que aparezca bien en esta ventana).

Este es un fragmento de código que se puede usar para dirigir la versión www de su sitio a la versión http: //. Hay otros códigos similares que se pueden usar también.

Completo controlador genérico WWW, http / https

No vi una respuesta completa. Lo uso para manejar la inclusión WWW.

  1. Genérico. No requiere información de dominio.
  2. Fuerzas WWW en el dominio principal: http://www.domain.com
  3. Elimina WWW en subdominios: sub.domain.com
  4. Conserva el estado HTTP / HTTPS.
  5. Permite cookies individuales para dominio / subdominios

Por favor, hágame saber cómo funciona esto o si dejé una laguna.

 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 la subcarpeta

Para aquellos que necesitan poder acceder a todo el sitio SIN el prefijo ‘www’.

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

Mare seguro que agregas esto al siguiente archivo

 /site/location/.htaccess 

www a no www con 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] 

uso: 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"; 

O .htaccess:

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

y El 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); } } }); 

Utilicé la regla anterior para reenviar www a no www y funciona bien para la página de inicio, sin embargo, en las páginas internas están reenviando a /index.php

Encontré esta otra regla en mi archivo .htaccess que está causando esto pero no estoy seguro de qué hacer al respecto. Cualquier sugerencia seria genial:

 ############################################ ## 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] 

No estoy seguro de por qué quieres eliminar www. Pero la versión inversa sería:

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

Y la ventaja de este script es: si tienes algo como test.whattimein.com o cualquier otro (entorno para desarrollar / probar) no redirigirá a U al entorno original.

La única forma en que lo hice funcionar …

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

Si estás forzando a www. en url o forcing ssl prototcol, intente utilizar posibles variaciones en el archivo htaccess, como:

 RewriteEngine en
 RewriteBase /

 ### Force WWW ###

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

 ## Forzar SSL ###

 RewriteCond% {SERVER_PORT} 80 
 RewriteRule ^ (. *) $ Https://example.com/$1 [R, L]

 ## Bloquear IP's ###
 Orden denegar, Permitir
 Negar desde 256.251.0.139
 Negar desde 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] 

Si desea eliminar www en http y https , use lo siguiente:

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

Esto redirige a Non ssl

a

Y SSL

a

en apache 2.4.* puede lograr esto usando una directiva Redirect with if ,

  Redirect / http://example.com/  

La respuesta seleccionada y muchas otras soluciones aquí soltaron la parte de la URL después de /, así que, básicamente, siempre se redireccionó al dominio principal, al menos para mí. Así que estoy agregando una muestra de trabajo respetando la ruta completa después de la barra.

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

Esto se actualiza para trabajar en Apache 2.4:

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

El único cambio frente a Michael es eliminar el [NC] , que produce el error “AH00665”:

La opción NoCase para el patrón no-regex ‘-f’ no es compatible y se ignorará

Hola, puedes usar las siguientes reglas en tu archivo htaccess:

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