2012-05-07 57 views
42

He echado un vistazo a las preguntas existentes, pero realmente no he encontrado nada que me funcione.http to https a través de .htaccess

Actualmente estoy ejecutando un sitio con un certificado SSL seguro. Se puede acceder al https://www.example.co.uk; existe un problema: también se puede acceder al sitio al http://www.example.co.uk; no quiero que esto sea posible. Lo necesito para redireccionar de http a https.

Encontré este fragmento de código para usar en un archivo .htaccess.

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.co.uk [NC] 
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301] 

Esto funciona bien cuando el usuario entra example.co.uk en su barra de direcciones, pero también tengo que añadir una sentencia condicional de algún tipo de forma que si el usuario introduce 'www.example.co.uk 'o' http://www.example.co.uk '.

He intentado usar los gustos de [OR], pero esto termina creando errores en el servidor.

Se agradece cualquier ayuda y sugerencias.

Saludos.

+2

posible duplicado de [Cómo redirigir todas las solicitudes HTTP a HTTPS] (http://stackoverflow.com/q/4083221/), [Forzar SSL/HTTPS con Zend Framework y mod_rewrite] (http://stackoverflow.com/q/1329647 /), [Forzar SSL y WWW en .htaccess] (http://webmasters.stackexchange.com/q/8833) – outis

Respuesta

96

intente lo siguiente:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

Además, también puede redirigir basado en el número de puerto, por ejemplo:

RewriteCond %{SERVER_PORT} ^80$ 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

Esto redirigir todas las solicitudes recibidas en el puerto 80 a HTTPS.

+1

Muchas gracias @BluesRockAddict - Cosas geniales. Funcionó una delicia! – fitzilla

+2

gracias! la forma más fácil de migrar (utilizando archivos .htaccess) de http: // a https: // (una vez que obtiene un certificado SSL) –

+0

Para aclarar, ¿está completando SERVER_NAME o dejándolo como está escrito? – AlxVallejo

3

Prueba de esto, que lo usaron y funciona bien

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
8

Agregue el código siguiente en el archivo .htaccess.

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

cambio example.com con su dominio del sitio web

URL redirigen tutorial se puede encontrar de aquí - Redirect non-www to www & HTTP to HTTPS using .htaccess file

+0

La respuesta aceptada no funcionó para mí, pero esta funciona bien. :) – ReeCube

+0

I está duplicado REQUEST_URI en 404 – fdrv

+0

Esta es la única respuesta de trabajo – kikuyu1

0

Para redirigir http://example.comohttp://www.example.comahttps://www.example.com de una manera sencilla , puede usar la siguiente regla en htaccess:

RewriteEngine on 

RewriteCond %{HTTPS} off 
RewriteCond www.%{HTTP_HOST} ^(?:www\.)?(www\..+)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [NE,L,R] 

[Probado]

% {REQUEST_SCHEME} variable está disponible desde Apache 2.4, esta variable contiene el valor del esquema solicitado (HTTP o HTTPS), en Apache 2.4 se puede utilizar la siguiente regla:

RewriteEngine on 


RewriteCond %{REQUEST_SCHEME} ^http$ 
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$ [NC] 
RewriteRule^https://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R] 
0

Existen formas mejores y más seguras para asegurarse de que todo su tráfico supera el https. Por ejemplo, configurar dos hosts virtuales y redirigir todo el tráfico de su http a su host https. Lea más sobre esto en this answer here on security.stackexchange.com.

Con la configuración de un host virtual para redirigir puede enviar un estado 301 (redirigir permanentemente) para que el navegador entienda que todas las siguientes solicitudes deben enviarse al servidor https al que se redirigió. Por lo tanto, no se realizarán más solicitudes de http después de la primera respuesta de redirección.

También debe comprobar cuidadosamente las respuestas dadas porque con las reglas de reescritura incorrectas puede perder los parámetros de consulta de sus solicitudes entrantes.

0

Si desea redirigir HTTP a HTTPS y desea agregar www con cada URL, utilice el .htaccess continuación

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

será primera redirigir HTTP a HTTPS y luego volverá a dirigir a www.

0

Intento todo el código anterior pero cualquier código no funciona para mi sitio web. Entonces pruebo este código y Este código funciona perfectamente para mi sitio web. Puede utilizar la siguiente regla en htaccess:

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 

//Redirect http to https 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

//Redirect non-www to www 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301] 

</IfModule> 

Cambie example.com con su nombre de dominio y lo siento por mi inglés pobre.