。htaccessファイルを使用することで、誰でもhttps://
にリダイレクトできることを知っています。ただし、すべてのコンテンツがHTTPSで提供されていない場合、SSL証明書に問題があります。
HTMLコードですべてのhttp://
URLをhttps://
に変更せずに、HTTPSで提供されるすべてのリソースを変換する方法はありますか?
例:http://domain.com
と入力すると、https://domain.com
に移動します。ただし、画像は問題を引き起こすHTTPSを使用していません。すべてのリソースでHTTPSを使用する方法はありますか?
私はこれを持っています:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_Host} ^www.domain\.com$ [NC]
RewriteRule ^ https://domain.com%{REQUEST_URI} [L,R=301]
ただし、コンテンツが保護されていないため、私のEV証明書は消えます。そのため、すべての画像もHTTPSで提供する必要があります。
サイト上のすべての画像(およびその他の)リンクから'http:'プレフィックスを削除する必要があります。これを行うと、ブラウザはデフォルトでページのロードに使用されるプロトコルを使用します。たとえば、これが最適です:
<a href="//www.example.com/">
そして、これはそうではありません:
<a href="http://www.example.com/">
一番上の例は完全に有効なマークアップであり、すでに使用している書き換えを使用して、HTTPS接続を介してすべてのリソースをロードします。 HTTPとHTTPSの両方で機能するため、すべてのリンクで使用を開始してください。SSLを有効または無効にしても、この問題は二度とありません。
唯一の考慮事項は、サイトでCDNまたは他のサードパーティがホストするコンテンツを使用している場合です。その場合、上記のアドバイスは、HTTPSを介してリソースを利用可能にした場合にのみ機能します。
これを行うと、EV(拡張検証)証明書が期待どおりに機能し、ページ上のすべてのリソースが安全な接続を介して読み込まれるのが見えるはずです。
簡単な修正として、すべてのページでContent-Security-Policy: upgrade-insecure-requests;
ヘッダーまたは<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
メタタグを送信することで、 WebブラウザーにすべてのHTTP URLをHTTPSとして書き換えるように依頼する を実行できます。
これは永続的なソリューションとしてではなく、すべてのURLをhttps
に変換できるようになるまでの移行ツールとして使用することを目的としています。