4


https自分のウェブサイトのログインページを、完全なウェブサイトではなく、のみで 開きたい。ログイン認証(成功)後、ウェブサイトwhoudが再び実行されhttpます。

現在、私のメインのログインページはtest_index.php私が含まれている場所ですtest_header.php

私の基本的なコードtest_header.php

if($_SERVER['SERVER_PORT'] != 443) {
   header("HTTP/1.1 301 Moved Permanently");
   header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
   exit();
}

しかし、これで完全なWebサイトが作成されhttps
ます。ここでも、を介して可能であることが.htaccessわかります。そのため、上記のコードスニペットをから削除し、ファイルtest_header.phpに次の行を追加します。.htaccess

<IfModule mod_rewrite.c>
  RewriteEngine on
  # 301 redirect to domain to 'www.'
  RewriteCond %{HTTP_HOST} ^testweb.com$ [NC]
  RewriteRule ^(.*)$ http://www.testweb.com/$1 [R=301,L]
</IfModule>

<FilesMatch test_index.php>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</FilesMatch>

注:testweb.comは単なる架空の名前であり、実際のWebサイトではありません

しかし、まだ完全なWebサイトはhttpsで実行されていますが、どこで間違いをしているのか教えてください。

編集

@webbiedave私の更新されたコードを確認してください、それは正しい方法ですか?

if ($_SERVER['REQUEST_URI'] == '/test_index.php') { // only check https on login
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
        exit();
    } else {
        die("Sorry,Your website is not secure");        
    }
} elseif (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
        // header("HTTP/1.1 301 Moved Permanently");
        header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
        exit();
}

ありがとう

4

1 に答える 1

4

https を検証するためにポート番号をチェックしないでください。https が非標準ポートにあることは不可能ではありませんが (非常にありそうもないことですが)。代わりに、$_SERVER['HTTPS']変数を確認してください。

if ($_SERVER['REQUEST_URI'] == '/login.php') { // only check https on login
    if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
        // do login stuff
    } else {
        // redirect to https or simply give an error
    }
} elseif (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
    // redirect to http
}
于 2011-02-10T07:10:20.493 に答える