Redirección htaccess https de www a non-www
He agregado redirección .htaccess
https
de www
a non-www
con:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
</IfModule>`
Cuando visito mi dominio, las siguientes redirecciones funcionan sin ningún problema:
http://www.example.com → http://example.com
http://www.example.com/abc → http://example.com/abc
Pero cuando visito mi dominio como https://www.example.com
o https://www.example.com/abs
, mi dominio no redirige y muestra el código de error: SSL_ERROR_INTERNAL_ERROR_ALERT
(en Firefox) o ERR_SSL_PROTOCOL_ERROR
(en Chrome)
He usado WordPress y el plugin Really Simple SSL.
¿Alguna idea de cómo solucionar mi error?

Antes de darte el CÓDIGO, permíteme explicarte algunos puntos:
Punto 1:
Es mejor si solo permites enlaces https
. Mezclar http
y https
para el mismo contenido rompe la seguridad añadida por https
. Con http
, nunca puedes estar seguro de que a tus visitantes se les muestre la misma página que estás proporcionando desde tu servidor.
Punto 2:
Los motores de búsqueda consideran que los sitios http
y https
son sitios diferentes, incluso cuando el dominio es el mismo. Por lo tanto, si no se configura correctamente, podrías recibir una penalización por contenido duplicado. Así que se recomienda usar https
completamente para un mejor SEO también.
Punto 3:
Incluso con un CÓDIGO .htaccess
adecuado, podrías obtener el mismo error si SSL no está configurado correctamente. Así que después de cambiar el CÓDIGO .htaccess
, es mejor probar tu configuración SSL contra estándares. Puedes usar herramientas como esta.
CÓDIGO recomendado:
Basado en los puntos anteriores, el siguiente es el CÓDIGO que puedes usar:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} =off [OR]
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*)$ "https://example.com/$1" [R=301,L]
# resto del código mod_rewrite de htaccess para WordPress
</IfModule>
Esto realizará las siguientes redirecciones de ejemplo:
http://www.example.com/ → https://example.com/
http://www.example.com/abc → https://example.com/abc
https://www.example.com/ → https://example.com/
https://www.example.com/abc → https://example.com/abc
# Adicionalmente, incluso si tu sitio es accesible por IP o
# algunos otros dominios o subdominios, este código también solucionará eso
http://Tu_IP_del_Servidor/abc → https://example.com/abc
http://sub-dominio.example.com/abc → https://example.com/abc
http://www.otro-dominio.com/abc → https://example.com/abc
CÓDIGO no recomendado:
Si por alguna razón no quieres seguir la recomendación anterior y aún deseas permitir tanto http
como https
, puedes usar el siguiente CÓDIGO (basado en esta respuesta):
<IfModule mod_rewrite.c>
RewriteEngine On
# establecer variable de protocolo
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ - [env=proto:http]
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*)$ "%{ENV:proto}://example.com/$1" [R=301,L]
# resto del código mod_rewrite de htaccess para WordPress
</IfModule>
Esto realizará las siguientes redirecciones de ejemplo:
http://www.example.com/ → http://example.com/
http://www.example.com/abc → http://example.com/abc
https://www.example.com/ → https://example.com/
https://www.example.com/abc → https://example.com/abc

Gracias. Para mí, agregar esto al .htaccess no causa ningún cambio. Estoy intentando redirigir https a http (no tenemos SSL por ahora) y simultáneamente redirigir www a no-www. Ya sea con htaccess o mediante php en functions.php. ¿Puedes echar un vistazo a mi pregunta y ver si puedes ayudar?https://wordpress.stackexchange.com/questions/286464/php-redirect-https-to-http-and-www-to-non-www
