Redirección htaccess https de www a non-www

11 feb 2017, 03:52:47
Vistas: 24.9K
Votos: 4

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?

3
Comentarios

Pregunta: 1. ¿Instalaste algún certificado SSL? 2. ¿Quieres que todas tus solicitudes http se redirijan a https?

Fayaz Fayaz
11 feb 2017 04:20:59

1- He instalado el certificado SSL Comodo. Los visitantes actuales del sitio ven https://example.com 2 - Quiero redireccionar: cuando los visitantes acceden a https://www.example.com se redirija a https://example.com

Gracias

DinhTv DinhTv
11 feb 2017 04:31:55

He proporcionado una respuesta con mod_rewrite. Sin embargo, si el problema persiste, entonces el problema está en otro lugar. En ese caso necesitaré más información. Por ejemplo, ¿utilizas algún servicio como Cloudflare? ¿Cuál es tu configuración SSL CODE? etc.

Fayaz Fayaz
11 feb 2017 06:44:50
Todas las respuestas a la pregunta 1
1

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
11 feb 2017 06:32:23
Comentarios

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

Kyle Vassella Kyle Vassella
21 nov 2017 18:50:28