1

ここに投稿された内容に対するフォローアップの質問:

HTTP ではなく HTTPS 経由でユーザーにページへのアクセスを強制するにはどうすればよいですか?

次のコードを 1 つのページ、私の CART ディレクトリの index.php ページに追加しました。

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

インデックス ページからサイトを閲覧すると、CART ディレクトリ内のすべてのファイルが HTTPS 経由で読み込まれますが (実際にはこれが必要です)、CART フォルダー外の別のページへのリンクをクリックすると、HTTP に戻ります。

これはどのように機能していますか?CART ディレクトリ内のページで HTTPS はどのようにアクティブなままになっていますか? CART ディレクトリ内のページの URL を入力すると、HTTPS は強制されません。これは理にかなっています。

サイトの URL はhttp://wtc.betaforming.comです。

これに頭を悩ませようとしています、ありがとう。

ブレット

4

3 に答える 3

1

あなたはあなたの質問あなた自身の質問に答えました:

これはどのように機能していますか?CART ディレクトリ内のページで HTTPS はどのようにアクティブなままになっていますか?

...あなたが言ったとき:

次のコードを 1 つのページ、私の CART ディレクトリの index.php ページに追加しました。

見る?カート ディレクトリ内のページに HTTPS 要件を適用していますが、他の場所では適用していません。これは、サイトで見ているものを反映しています。サイト全体で HTTPS を要求する場合は、Web サーバーを使用してその要件を適用することを検討してください。たとえば、Apacheandを使用すると、mod_rewrite次のようなことを試すことができます。

<IFModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IFModule>

編集

あなたの投稿のコメントで、「index.php ページから CART ディレクトリ内の他のページを参照するときに HTTPS が強制される方法/理由を理解しようとしています」と述べています。私の推測では (あなたのコードを見せていないので推測です)、これらの URL は次のように ssl に依存しない方法で構築されていると思います:

<a href="/cart/some_page.html">I'm SSL-enabled on a page with HTTPS in the address bar</a>

繰り返しますが、コードを見なければ何とも言えません。

乾杯

于 2012-11-13T21:43:30.013 に答える
1

このコードをルート ディレクトリの .htaccess ファイル (Apache を実行している場合) に追加することをお勧めします。

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTPS} =off
    RewriteRule ^DIRECTORY1|DIRECTORY2|DIRECTORY3 https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    RewriteCond %{HTTPS} =on
    RewriteCond %{REQUEST_URI} !^/DIRECTORY1|DIRECTORY2|DIRECTORY3
    RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

DIRECTORY1、DIRECTORY2などをHTTPSを強制するディレクトリに置き換えてから、DIRECTORY1、DIRECTORY2などでない場合はHTTPにリダイレクトすることで、逆に実行します(すぐ下のコード)。

お役に立てれば

于 2012-11-13T21:26:39.793 に答える