redirección de http a https apache

157

Entorno Centos con apache

Intentando configurar la redirección automática de http a https

From manage.mydomain.com --- To ---> https://manage.mydomain.com 

Intenté agregar lo siguiente a mi httpd.conf pero no funcionó

 RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

¿Algunas ideas?

Deano
fuente

Respuestas:

210

De hecho, he seguido este ejemplo y funcionó para mí :)

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
  DocumentRoot /usr/local/apache2/htdocs
  SSLEngine On
 # etc...
</VirtualHost>

Entonces hazlo:

/etc/init.d/httpd restart

Deano
fuente
77
Tenga en cuenta que esto solo está disponible si tiene acceso al archivo VirtualHost. Es el método recomendado.
foochow
44
Después de cambiar esto en httpd.conf, reinicie el servidor web apache. para que también refleje y borre la memoria caché del navegador.
Suriyan Suresh
2
Me gustaría informar que este método no funcionó para mí con Ubuntu 12.4, sin embargo, la respuesta propuesta de RewriteEngine funcionó.
Deano
2
tienes que reiniciar? una recarga es mucho menos destructiva y traerá el nuevo archivo de configuración. /etc/init.d/httpd reload|| service httpd reload
Rebecca Dessonville
3
Dado que el propósito era redirigirlo al modo SSL, la línea DocumentRoot /usr/local/apache2/htdocsya no es necesaria
Abel Callejo
130
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

http://www.sslshopper.com/apache-redirect-http-to-https.html

o

http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html

IdemeNaHavaj
fuente
3
Esta es una solución mejor que la aprobada, porque funciona incluso si está detrás de un descargador SSL como Pound o BigIP. Esos descargadores a menudo pasarán todo el tráfico al mismo puerto, y la solución aprobada no funcionará en ese caso específico
spiritoo
1
@spiritoo No es así. Los documentos de Apache dicen específicamente que esta es una de esas situaciones en las que no debería usar mod_rewrite y debería usar Redirect: httpd.apache.org/docs/2.4/rewrite/avoid.html
Luke Madhanga
44
@LukeMadhanga Apache docrecomandos usando Redirect para el rendimiento. Pero aún así, la solución RewriteEngine es mejor, en el sentido de más genérica, porque funciona incluso en el caso que describí (descarga). El objetivo de mi comentario es proporcionar a cada usuario la clave para elegir entre las dos respuestas. Algunas personas quieren procedimientos genéricos (grandes cuerpos), otras quieren rendimiento ... es una elección libre.
spiritoo
20
Sin embargo, esto es excelente, si desea aumentarlo, agregue esto [R = 302, L, QSA] para que los parámetros también se pasen a la página segura. Debería verse así:% {REQUEST_URI} [R = 302, L, QSA]
Svetoslav Marinov
Usé estas líneas y cuando intento cargar la página, la respuesta es "Error al cargar el recurso: net :: ERR_CONNECTION_REFUSED". ¿Qué estoy haciendo mal?
Serkan
98

Buscado apache redirect http to httpsy aterrizado aquí. Esto es lo que hice en ubuntu:

1) Habilitar módulos

sudo a2enmod rewrite
sudo a2enmod ssl

2) Edite la configuración de su sitio

Editar archivo

/etc/apache2/sites-available/000-default.conf

El contenido debe ser:

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    <path to your crt file>
    SSLCertificateKeyFile   <path to your private key file>

    # Rest of your site config
    # ...
</VirtualHost>

3) Reiniciar apache2

sudo service apache2 restart
Jossef Harush
fuente
Trabaja con Ubuntu 16.04 y Apache2. ¡Gracias!
Sylvester Yao
11

En realidad, su tema pertenece a https://serverfault.com/ pero aún puede intentar verificar estas directivas .htaccess :

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://%{HTTP_HOST}/$1
5viente
fuente
11

El uso de mod_rewrite no es la forma recomendada, sino que usa el host virtual y la redirección.

En el caso, si está dispuesto a hacerlo usando mod_rewrite:

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

Referencia: Httpd Wiki - RewriteHTTPToHTTPS

Si está buscando un redireccionamiento permanente 301, el indicador de redireccionamiento debe ser como,

 R=301

entonces la RewriteRule será como,

RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
Vincy
fuente
6

Si tiene Apache2.4, verifique 000-default.conf: elimine DocumentRooty agregue

Redirect permanent / https://[your-domain]/
indiferencia
fuente
5

Versión del servidor: Apache / 2.4.29 (Ubuntu)

Después de una larga búsqueda en la web y en la documentación oficial de apache, la única solución que me funcionó vino de /usr/share/doc/apache2/README.Debian.gz

To enable SSL, type (as user root):

    a2ensite default-ssl
    a2enmod ssl

En el archivo /etc/apache2/sites-available/000-default.conf agregue el

Redirigir "/" " https://sub.domain.com/ "

<VirtualHost *:80>

    #ServerName www.example.com
    DocumentRoot /var/www/owncloud
    Redirect "/" "https://sub.domain.com/"

Eso es.


PD: si desea leer el manual sin extraer:

gunzip -cd /usr/share/doc/apache2/README.Debian.gz
DimiDak
fuente
3

Esto funcionó para mí:

RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L,R=301]
Fint
fuente
3

Este código me funciona.

# ----------port 80----------
RewriteEngine on
# redirect http non-www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# redirect http www to https www
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

# ----------port 443----------
RewriteEngine on
# redirect https non-www to https www
RewriteCond %{SERVER_NAME} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]

usuario7817632
fuente
2

Pruebe este en la configuración de alojamiento virtual de Apache y luego vuelva a cargar el servicio Apache

RewriteEngine On

RewriteCond %{HTTPS} off


RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
MD IRFAN
fuente
-1

Necesitaba esto para algo tan simple como redirigir todo el httptráfico de la página de inicio de Apache predeterminada en mi servidor a uno servido https.

Como todavía soy bastante ecológico cuando se trata de configurar Apache, prefiero evitar el uso mod_rewritedirecto y en su lugar decidí algo más simple como este:

<VirtualHost *:80>
  <Location "/">
     Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
  </Location>
</VirtualHost>

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  SSLEngine on
  ...
</VirtualHost>

Me gusta esto porque me permitió usar variables apache y de esa manera no tuve que especificar el nombre de host real, ya que es solo una dirección IP sin un nombre de dominio asociado.

Referencias: https://stackoverflow.com/a/40291044/2089675

smac89
fuente