.htaccessでSSL対応にした場合Google Chromeでバグ


先日.htaccessだけでSSLフォームがあるサイトに対応する方法 という記事を書きましたが実践したサイトをたまたまGoogle Chromeで除くとレイアウトが崩れてる(汗)画像が見えていない(滝汗)。

どうもGoogle Chromeではhtmlやphpファイル以外にもcssやjpegファイルまでリダイレクトしてるみたいですね。

それで、httpsにいくとcssやjpeg、gifがhttpから読み取ろうとするのでGoogle Chromeが「安全でない」とブロックしてしまう。

するとcss利かない→レイアウト崩れ。画像が見れないという現象が起きるよう。

解決策を探してたら丁寧なサイトがありました。

Chromeで画面が真っ白になってしまう。.haccsessでSSLを制御している時は注意

なかなか丁寧で親切なサイトです。

方法としては前回のソースからすると

// /contact/index.htmlと/contact/mail.phpはsslに
RewriteCond %{REQUEST_URI} .*/contact/index.html$ [OR]
RewriteCond %{REQUEST_URI} .*/contact/mail.php$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

// /contact/index.htmlと/contact/mail.php以外は通常ページに
RewriteCond %{REQUEST_URI} !(.*/contact/index.html$)
RewriteCond %{REQUEST_URI} !(.*/contact/mail.php$)
RewriteCond %{REQUEST_URI} !(.*css$)
RewriteCond %{REQUEST_URI} !(.*jpg$)
RewriteCond %{REQUEST_URI} !(.*png$)
RewriteCond %{REQUEST_URI} !(.*gif$)
RewriteCond %{REQUEST_URI} !(.*js$)
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

となります。

これで解決した。

IE6も変になってたみたいで直って良かった(^^)/