3

https他のすべてのページが実行されている間にいくつかのページを実行したいhttp

以下のコードを.htaccessconfig.inc.phpファイルに書きました

.htaccess

RewriteEngine on
Options +FollowSymLinks 
RewriteBase /

RewriteRule ^login/?$ login.php [NC]

# Rewrite non www to www.charityrummage.com
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# Rewrite to https
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /login [OR]
RewriteCond %{REQUEST_URI} /do_login.php [OR]
RewriteCond %{REQUEST_URI} /payment/?.*$ 
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

# traffic to http://, except login.php and payment.php
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(/login|/do_login.php|/payment)
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

また、必要なconfig.inc.phpとウェブサイトの最初のファイルにいくつかの変更を加えました

config.inc.php

$ssl_page = array('login.php','do_login.php','payment.php');
// Note: do_login.php is intermediate page
if(in_array(trim($_SERVER['SCRIPT_NAME'],'/'),$ssl_page)){
    define('PROTOCOL','https://');    
 }else{
   define('PROTOCOL','http://');
}
define('DS','/');
define('URL',PROTOCOL.$_SERVER['HTTP_HOST'].DS);
// based on URL i made CSS and JS Path

ここにウェブサイトのリンクがあります:

http://www.charityrummage.com

ログインページは SSL 対応です:

https://www.charityrummage.com/login

しかし

ウェブサイトを実行すると、さまざまなブラウザーでさまざまなエラーが発生し、本当に面倒です。以下は、さまざまなブラウザでのエラーの説明です

IE8

常にセキュリティエラーのプロンプトが
表示され、[はい]をクリックすると、左側のパネルを除いてすべて正常に表示されます
[いいえ]をクリックすると、Webアドレスの近くに証明書エラーが表示されますが、Webサイトは正常に動作します.

クローム (v:20.0.1132.8)

以下の形式で css と js に関する複数の警告を表示します (コンソールで参照)。

https://www.charityrummage.com/loginのページで、 http: //www.charityrummage.com/css/reset.css の安全でないコンテンツが実行されました

ただし、ログインページのソースを表示すると、すべての cssjsが実行されていることがわかりますhttps://

Firefox (v16.0)

それはほんの数秒間ロック記号(安全)を表示してから消えました
(httpsのセキュリティ警告を表示しないことに驚いています)が、 ページ情報->メディアに移動すると、多くの画像がhttp://から来ています

正確な問題を調べて教えてください。

もう一つ知りたいことがあります。

https://ページが正しく表示されない場合、どちらが責任を負いますか

  • オペレーティング システムまたは
  • ブラウザ OR
  • サーバーまたは
  • プログラミングの問題または
  • SSL証明書の問題

    そして最後に、この問題の解決策は何ですか?

ありがとう

4

2 に答える 2

2

このルールを試してください:

# Force files ending in X to use same protocol as initial request
RewriteRule \.(gif|jpe?g|png|ico|css|js)$ - [S=1]

またはこれ:

# don't do anything for images/css/js (leave protocol as is)
RewriteRule \.(gif|jpe?g|png|ico|css|js)$ - [NC,L]

の前に# traffic to http://

于 2012-09-07T11:35:45.210 に答える
0

ページのベースhrefを次のように設定することで、以前にこの問題を回避しました

<base href="<?php echo HTTPS_BASE_REF; ?>"></base>

これは、すべてのリンクがこれから派生し、正しく解決されたことを意味します。

config.inc.php ファイルで HTTPS_BASE_REF の定数を設定しました。

于 2012-09-07T11:32:44.957 に答える