Redirección adecuada de Apache de http a https

Redirección adecuada de Apache de http a https

Configuré un nuevo host virtual para un nuevo sitio en mi servidor, pero funciona de manera extraña a pesar de tener exactamente la misma configuración que mi sitio original.

Quiero que todas las solicitudes sean redirigidas a HTTPS, en pocas palabras. En mi sitio principal (el que funciona) tengo esto especificado en la VirtualHostconfiguración, y .htaccesstengo una regla adicional especificada para permitir URL cortas. Específicamente, el problema en el sitio que no funciona es que si intento ir a example.com/url, la redirección va a https://example.comurly elimina lo necesario /de la URL.

Copié la configuración exacta al archivo nuevo VirtualHostdesde .htaccessel sitio de trabajo, así que no estoy seguro de por qué no funciona en el nuevo. Todos mis registros DNS para ambos sitios usan registros A para señalarlos, no hay redireccionamientos ni sucede nada a nivel de DNS. Intenté poner un /al final de las Redirectlíneas en el código siguiente, pero el problema no se resolvió. El servidor es Ubuntu 14.04 y Apache es la versión 2.4.7. Ambos sitios son nombres de dominio separados con .confarchivos utilizados separados, pero están alojados en el mismo servidor con la misma dirección IP. ¿Como puedo solucionar este problema?

El código relevante en VirtualHost:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    Redirect permanent / https://example.com
</VirtualHost>

Y en .htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]

En caso de que ayude/importe, esta es la configuración SSL en mi archivo VirtualHost, aunque está colocada al principio del archivo fuera de todas las demás directivas:

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

Y esta es la configuración específica para el VirtualHostsitio:

<VirtualHost *:443>
    ServerName example.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/example
    ErrorLog ${APACHE_LOG_DIR}/errorexample.log
    Options -Indexes

    SSLEngine on
    SSLCertificateFile /etc/ssl/example/examplecert.crt
    SSLCertificateKeyFile /etc/ssl/example/examplekey.key
    SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>

Respuesta1

Para redirigir a HTTPS:

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

Pero necesitas tener un host virtual para SSL:

NameVirtualHost *:443
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

NOTA:tienes que crear un certificado SSL... pero haygran tutorial¡para esto!

información relacionada