Назад | Перейти на главную страницу

Автоматическое перенаправление http на https с несколькими доменами - файлы, на которые есть ссылки из кода

Я знаю, что есть повторяющиеся вопросы Вот и Вот но это не решило моих проблем.

Когда localhost набирается в адресной строке браузера, он правильно перенаправляется на https://localhost, но все вызовы в моем коде для загрузки файлов с http не перенаправляются и не переписываются на https. Например:

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

я пытался Redirect permanent / https://localhost/ в файлах конфигурации Apache в VirtualHost разделы, и я также пробовал RewriteRule с участием .htaccess

В Firefox ошибка, которую я получаю:

Заблокирована загрузка смешанного активного контента »http://static/css/colwidth.min.css

Буду признателен за помощь в понимании того, как это сделать с обе Конфигурация Apache и .htaccess (Я знаю .htaccess не является предпочтительным методом, но я все же хотел бы понять, почему он не работает)

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

В Ошибка Firefox Я получаю:

В этом проблема ... браузер вызывает эту ошибку перед запрос даже достигает вашего сервера, поэтому любая попытка перенаправить на сервер будет слишком поздно.

Если сама страница перенаправлена ​​на https://... тогда все упомянутые ресурсы на этой странице также должны использовать https://... также, иначе вы получите предупреждение о "смешанном содержании", как указано выше. Это базовая система безопасности браузера, позволяющая предотвратить любые безопасный утечка контента через небезопасный (HTTP) соединение.

Вместо использования абсолютных URL-адресов (которые включают схема) в HTML вы можете вместо этого использовать относительные URL-адреса протокола, например:

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