1 votos

Automáticamente redirigir http a https con dominios múltiples - archivos referenciados desde dentro de código

Sé que hay duplicar preguntas aquí y aquí , pero estos no han resuelto mis problemas.

Cuando localhost se escribe en el navegador la url de la barra, es correctamente redirigido a https://localhost, pero todas las llamadas dentro de mi código para cargar archivos con http no están siendo redirigidas o reescrito https. Por ejemplo:

<link rel="stylesheet" type="text/css" href="http://static/css/colwidth.min.css">

He intentado Redirect permanent / https://localhost/ en los archivos de configuración de Apache en el VirtualHost secciones y también he intentado RewriteRule con .htaccess

El Firefox de error que estoy recibiendo es:

Bloqueado carga mixta contenido activo "http://static/css/colwidth.min.css"

Agradecería ayuda para la comprensión de cómo hacer esto con tanto de configuración de Apache y .htaccess (sé .htaccess no es el método preferido - pero aun así me gustaría entender por qué no funciona)

http:

<VirtualHost *:80>
    ServerAdmin me@localhost
    DocumentRoot "D:/Website/path/to/root"
    ServerName localhost
    Redirect permanent / https://localhost/

    <Directory "D:/Website/path/to/root">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require ip 127.0.0.1
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin me@localhost
    DocumentRoot "D:/Website/path/to/root"
    ServerName static
    Redirect permanent / https://static/

    <Directory "D:/Website/path/to/root">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require ip 127.0.0.1
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "D:/Website/path/to/root"
    ServerName localhost:443
    ServerAdmin me@localhost
    ErrorLog "c:/xampp/apache/logs/error.log"
    TransferLog "c:/xampp/apache/logs/access.log"
    <Directory "D:/Website/path/to/root">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require ip 127.0.0.1
    </Directory>

    SSLEngine on

    SSLCertificateFile "c:/xampp/apache/bin/wtr.cert"
    SSLCertificateKeyFile "c:/xampp/apache/bin/wtr.key"

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "c:/xampp/apache/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    CustomLog "c:/xampp/apache/logs/ssl_request.log" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>                                  

https:

<VirtualHost *:443>
    DocumentRoot "D:/Website/path/to/root"
    ServerName static:443
    ServerAdmin me@localhost
    ErrorLog "c:/xampp/apache/logs/error.log"
    TransferLog "c:/xampp/apache/logs/access.log"

    <Directory "D:/Website/path/to/root">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require ip 127.0.0.1
    </Directory>

    SSLEngine on

    SSLCertificateFile "c:/xampp/apache/bin/static.cert"
    SSLCertificateKeyFile "c:/xampp/apache/bin/static.key"
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "c:/xampp/apache/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    CustomLog "c:/xampp/apache/logs/ssl_request.log" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

.htaccess

RewriteEngine On
    # For SSL
    RewriteCond %{HTTPS} !=on
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [L,R=301]
    # I also tried:
    #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]

    #Rules for Versioned Static Files
    RewriteRule ^(js|js-common|css|css-common|img|img-common)/(.+)\.([0-9])+\.(js|css|php|jpg|gif|png)(.*)$ $1/$2.$4$5 [L]

    #rename invalid file and directory requests
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?redirectroot=true

6voto

jl6 Puntos 395

El Firefox error que estoy recibiendo es:

Ese es el problema... el navegador es el desencadenamiento de este error antes de que el pedido llegue a su servidor, por lo que cualquier intento de redirigir el servidor es demasiado tarde.

Si la página en sí es redirigido a https://... , a continuación, todos los recursos de referencia dentro de la página también debe utilizar https://... así, de lo contrario usted consigue el "contenido mixto" de advertencia como el anterior. Esto es básico de seguridad del navegador con el fin de prevenir cualquier seguro de contenido se filtró a través de una inseguro (HTTP) de conexión.

En lugar de utilizar direcciones Url absolutas (que incluyen el esquema) en el HTML, puede utilizar el protocolo de direcciones Url relativas lugar, por ejemplo:

<link rel="stylesheet" type="text/css" href="http://serverfault.com//static/css/colwidth.min.css">

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: