前回は、.htaccessでサイトの非SSL領域へのリンクをSSL領域にリダイレクトする方法について考えてみました。
その後、早速.htaccessを修正してSSL領域のページが(安全でないとの)警告なしで表示されるか調べてみました。ところが、警告はなかなか消えません。
Javascriptなどは正しくリダイレクトされていますが、どうもCSSが読み込めていないようです。
.htaccessによるCSSファイルのリダイレクトに関して、不具合が発生することは良くあることなのか? 参考になりそうな情報を検索してみましたが見つかりません。通常の場合であれば、つまづくような問題ではなさそうです。
.htaccessの設定に問題があるのか? そこでブラウザでそれぞれのCSSのアドレスを入力してみると、正しくリダイレクトは行われています。どうやら.haccessの問題ではなさそうです。
さらに調べを進めていくと、bootstrap(レスポンシブデザインのためのCSSライブラリ)で問題が発生していました。次のbootstrapを組み込んでいる行のアドレスをhttpからhttpsに変えたり、行そのものをコメントアウトすれば、他のCSSは読み込めるようになります。
<link href="http://books-nekoya.jp/css/bootstrap.min.css" rel="stylesheet">
この時点で、bootstrapだけの問題かと思われましたが、他のHTMLではbootstrap読み込みの部分を修正しても、他のCSSが読み込まれません。ファイルによってはJavascriptも読めなくなっています。
そもそも、スクリプトの読み込みを修正せずに.htaccessのリダイレクトだけで対応しようとすること自体が非常識なのだろうか?
この問題については、これ以上の追及を断念し、地道にURLをhttpからhttpsに書き換えていくことにします。。
まだ非SSL領域からSSL領域への移行作業は進行中なので、HTMLにリンクされている多くのファイルがブロックされブラウザは「安全でないサイト」の警告を表示したりします。どのファイルがブロックされているのか調べるには、chromeでは、ブラウザウィンドウ右上のchromeの設定から「その他のツール」-「デベロッパーツール」を選び「Networkタブ」を開きます。「デベロッパーツール」は[Ctrl]+[Shift]+[i]でも開きます。
「デベロッパーツール」の「Console」タブを開くと、「Mixed Content」(httpsからhttp上のリンクを参照)として警告が出ていますのでこれをhttps(SSL領域)を参照するように修正します。
こうしてルート直下のhtmlは全て完全にSSL対応することが出来ました。
今思えば、HTMLやJavascript内のhttp(非SSL領域)へのリンクを残したまま、.htaccessでのリダイレクトで対応できるという考えそのものが間違いだったようです。つまり、HTML内やJavascript内のURLは全てhttpからhttpsに書き換える必要がある様です。
これに気づいたとき、その作業の大変さに少しぞっとしましたが、エディターの「Grepして置換」機能を使えば思ったほど大変な作業ではありませんでした。
0 件のコメント:
コメントを投稿