Automaticamente redirecionando http para https com múltiplos domínios - arquivos referenciados de dentro do código

1

Sei que existem perguntas duplicadas aqui e here mas eles não solucionaram meus problemas .

Quando o host local é digitado na barra de URL do navegador, ele é redirecionado corretamente para https://localhost , mas todas as chamadas dentro do meu código para carregar arquivos com http não estão sendo redirecionadas ou reconfiguradas para https . Por exemplo:

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

Eu tentei Redirect permanent / https://localhost/ nos arquivos de configuração do Apache nas seções VirtualHost e também tentei RewriteRule com .htaccess

O erro Firefox que estou recebendo é:

Blocked loading mixed active content “http://static/css/colwidth.min.css

Eu gostaria de receber ajuda para entender como fazer isso com ambos configuração do Apache e .htaccess (eu sei .htaccess não é o método preferido - mas eu ainda gostaria de entender por que não é t trabalhando)

link

<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>                                  

link

<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
    
por mseifert 12.07.2017 / 01:01

1 resposta

5

The Firefox error I am getting is:

Esse é o problema ... o navegador está acionando esse erro antes de o pedido chegar ao seu servidor, então qualquer tentativa de redirecionar o servidor é tarde demais.

Se a página em si for redirecionada para https://... , todos os recursos mencionados nessa página também deverão usar https://... , caso contrário, você receberá o aviso de "conteúdo misto", conforme descrito acima. Esta é a segurança básica do navegador para evitar que qualquer conteúdo seguro vaze por uma conexão insegura (HTTP).

Em vez de usar URLs absolutas (que incluem o esquema ) no HTML, você pode usar URLs relativas a protocolo, por exemplo:

<link rel="stylesheet" type="text/css" href="//static/css/colwidth.min.css">
    
por 12.07.2017 / 01:21