2011-10-27 17 views
21

私は自分のサイトにSSLを追加しました。 https://mydomain.comに行くと、テキストが表示されますが、CSSや画像はありません。それは専用サーバー上にあり、私はコードを完全に管理しています。なぜ画像とCSSがHTTPSで表示されないのですか?

現在、すべてのパスは相対パスです。 HTTPまたはHTTPSを使用しているかどうかにかかわらず、これらのファイルに直接移動すると、画像とCSSを表示できます。しかし、ページを読み込んでロードしていないときには...

Firebugを使用してNETで見ると、各画像302が見つかりました。どういう意味ですか?

httpとhttpsが同じようにサイトを表示するためには、どのような変更が必要ですか?

すべてのパスを絶対にしますか?すべてに影響を及ぼすために単一の変更を行う方法はありますか、あるいは私は実際に行ってそれぞれを変更する必要がありますか?

ありがとうございました。

答えて

10

ホットリンクの保護はありますか?あなたがそれを無効にしようとしている場合。それが役立つかどうかを確認してください。

+0

これを無効にする代わりに、あなたのhtaccessに次のようなものを書くことができます:RewriteCond%{HTTP_REFERER}^http?s://(www \。)?XXX.com – user2992220

+4

ホットリンクの保護とは? –

2

すべてを絶対にする必要はありませんが、SSLを使用してCSSと画像にアクセスできるようにする必要があります。それらに直接アクセスしてみるか、Firebugやそれに類するブラウザツールを使って、どこから読み込もうとしているのか把握してください。 「プロトコルに基づいたURL」を使用して、CSS、画像などが常にページ自体と同じプロトコル(httpまたはhttps)を使用してアクセスされるようにしてください。 http://paulirish.com/2010/the-protocol-relative-url/

+0

私の画像とCSSはHTTPとHTTPSの両方で見ることができますが、明らかにそれらは読み込まれません。私がHTTPSページに行き、FFでソースを表示してからCSSリンクをクリックすると、HTTPになります...しかし、リンクをクリックすると、HTTPSページでHTTPSとして別のページをロードします。私は少し混乱しています。 – santa

1

私は同じ問題がありました。ページがhttpsで開かれている場合は、httpsにもcss/jsをロードする必要があります。これは私が意味するのは、css/jsを読み込むには、html/jsp/jsfなどのページを開くのと同じプロトコルを使うべきです。したがって、解決策は、css/jsの絶対URLを使用しないことです。

<link type="text/css" rel="stylesheet" href="../css/style.css" /> 

ORこの使用:これは、画像の読み込みの問題を解決する必要があり

<% String contextPath=request.getScheme()+"://"+request.getServerName()"+":"+request.getServerPort()+request.getContextPath(); 

<link type="text/css" rel="stylesheet" href="<%=contextPath>/css/style.css" />

を次のように代わりに相対URLを使用します。

+0

「/css/myfile.css」のように、絶対的であるが同じプロトコルを示すために二重スラッシュを使用することができます。 – nickdnk

2

絶対的なリンク(http://www.yourcompany.net/yourcompany.cssなど)であなたのCSSを指している場合、CSSはhttpsに表示されません。その絶対値をhttps://www.yourcompany.net/yourcompany.cssにすると、両方の呼び出しで動作します。