¿Cómo hago para que todo el sitio use una conexión segura? [cerrado]


18

En Drupal 7, utilicé el módulo de inicio de sesión seguro para ejecutar el sitio en una conexión segura, pero parece que no vuelve a http al cerrar sesión. Me gustaría ejecutar todo el sitio como https: // como una simplificación.

¿Hay una manera simple de hacer esto sin el uso del módulo?


Hoy acabo de instalar el módulo Htaccess , cambié su configuración existente e implementé este perfil. Parece funcionar perfectamente ...
Aleksey Zubenko

Respuestas:



35

Si desea redirigir todas sus páginas para que se vean obligadas a usar SSL, agregue esto a su .htaccessarchivo.

# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Esto debe colocarse directamente después RewriteEngine on si no tiene reescrituras anteriores.


1

Otro truco útil, si tiene acceso raíz a Apache para alterar sus directivas vhost es agregar esto a la directiva SSL para el sitio. La mayoría de los navegadores modernos obedecen esta directiva (IE9 no)

Header always set Strict-Transport-Security "max-age=63072000"

Puede establecer la edad a lo que quiera. Lo que esto hace es informar a los navegadores web que obedecen esto para usar SOLO SSL para comunicarse con su sitio web y nunca HTTP. Esto agrega un poco de seguridad con toda la situación de conmutación HTTP / HTTPS.

Es un truco útil.

NOTA: Esto solo funcionará si tiene un certificado SSL VÁLIDO (no autofirmado, caducado o incorrecto) en su sitio. Si no lo hace, evitará que el navegador se conecte a él hasta que expire el período de edad máxima.


0

Es posible que desee probar otra opción: es lo que necesitaba para una de mis instalaciones y no requería módulos adicionales:

Primero, en su .htaccess:

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^www\.yourdomainhere\.com*
RewriteRule ^(.*)$ https://www.yourdomainhere.com/ [L,R=301]

Esto debe agregarse después de:

RewriteEngine on

Luego, en su settings.php:

$base_url = 'https://www.yourdomainhere.com'; 

Además, es posible que desee verificar los recursos externos, como las fuentes web y otras referencias que deben provenir de un dominio https para evitar advertencias de certificados.

Espero que esto ayude.


-2

Hay otra solución, que es simplemente agregar $ _SERVER ['HTTPS'] = 'On'; en el archivo settings.php

Ver más en https://www.drupal.org/https-information#comment-9901783

Sin embargo, parece que el método htaccess redirige independientemente, mientras que el archivo settings.php requiere que se borre la memoria caché del navegador.


2
No parecía hacer el truco solo. Tuve que borrar los cachés de drupal, pero luego, aunque las páginas de drupal se sirvieron como https, los recursos como las imágenes no. Se cargaron, pero el navegador estaba advirtiendo al respecto (en la consola) y el ícono del candado tenía una advertencia. Tuve que agregar la directiva htaccess de la respuesta de Ricks para obtener un ícono de bloqueo adecuado.
commonpike
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.