[Apache] htaccess redirecciona a https: // www



Answers

La respuesta de Michals funcionó para mí, aunque con una pequeña modificación:

Problema:

cuando tiene un certificado de seguridad de sitio único , un navegador que intenta acceder a su página sin https: // www. (o cualquiera que sea el dominio que cubre su certificado) mostrará una fea pantalla roja de advertencia antes incluso de recibir el redireccionamiento a la página https segura y correcta.

Solución

Primero use el redireccionamiento a www (o cualquier dominio que esté cubierto por su certificado) y solo luego realice el redireccionamiento de https. Esto asegurará que sus usuarios no se enfrenten a ningún error porque su navegador ve un certificado que no cubre la url actual.

#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

#Now, rewrite to HTTPS:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Question

Tengo el siguiente código htaccess:

<IfModule mod_rewrite.c>

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

</IfModule>

Quiero que mi sitio sea redirigido a https://www. con HTTPS y haciendo cumplir la www. subdominio, pero cuando tengo acceso a http://www. (sin HTTPS), no me redirecciona a https://www con HTTPS.




Esta es la mejor forma que encontré para Proxy y no para usuarios proxy

RewriteEngine On

### START WWW & HTTPS

# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

### END WWW & HTTPS



Hay muchas soluciones por ahí. Aquí hay un enlace a la wiki de Apache que trata este problema directamente.

http://wiki.apache.org/httpd/RewriteHTTPToHTTPS

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in httpd.conf
# or .htaccess context



Esto funcionará tanto para https como para www

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]



Si está en CloudFlare, asegúrese de usar algo como esto.

# BEGIN SSL Redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END SSL Redirect

Esto lo salvará del ciclo de redirección y redirigirá su sitio a SSL de manera segura.

PD: ¡Es una buena idea si comprueba el mod_rewrite.c!




Links