重複する質問があることは知っています ここ と ここ しかし、これらは私の問題を解決していません。
ブラウザのURLバーにlocalhostを入力すると、https://localhost
に正しくリダイレクトされますが、コード内でhttp
を含むファイルをロードするためのすべての呼び出しは、https
にリダイレクトまたは書き換えられません。 。例えば:
<link rel="stylesheet" type="text/css" href="http://static/css/colwidth.min.css">
VirtualHost
セクションのApache構成ファイルでRedirect permanent / https://localhost/
を試しました。また、.htaccess
でRewriteRule
も試しました。
私が得ているFirefox
エラーは次のとおりです。
混合アクティブコンテンツ「
http://static/css/colwidth.min.css
」の読み込みがブロックされました
bothApacheconfigと.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)接続を介してリークされるのを防ぐための基本的なブラウザセキュリティです。
HTMLで絶対URL(schemeを含む)を使用する代わりに、代わりにプロトコル相対URLを使用できます。次に例を示します。
<link rel="stylesheet" type="text/css" href="//static/css/colwidth.min.css">