1

私のサイトは現在、サイトで収集されているデータに基づいてhttpセクションとhttpsセクションを使用しています(フォームデータはhttpsを使用しています)。

私のインデックスページでは、上部にPHPコードがあります。

<?php
    session_start();
    ob_start();
    if( $_SERVER['SERVER_PORT'] == 443) {
        header('Location:http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])); 
        die();
    } 
?>

ただし、ページが読み込まれず、404エラーが発生します。同様に、ヘッドコードを使用してhttpsセキュリティのあるセクションにアクセスすると、次のようになります。

<?php
session_start();
ob_start();
    if( $_SERVER['SERVER_PORT'] == 80) {
        header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])); 
        die();
    }
?>

サイトが応答せず、何らかの理由でhttpからhttpsに切り替えるときに二重スラッシュが作成されます。

例:http : //www.abc.com/、enroll.phpにルーティングするボタンをクリックするとhttp://www.abc.com//enroll.phpが表示されます

なぜダブルスラッシュが必要なのですか、そして誰でも404エラーを手伝うことができますか?

4

1 に答える 1

2

dirname()PHP_SELFそれは必ずしも完全なディレクトリではないため、動作しません。

dirname("/enroll.php")空の文字列を正しく返します。これにより、doubleが生成され//ます。

正確に何をしようとしていますか?

于 2010-05-11T21:33:09.467 に答える