Двойная косая черта в конце URL при переходе на HTTPS? - PullRequest
1 голос
/ 12 мая 2010

Мой сайт в настоящее время использует разделы 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?

1 Ответ

2 голосов
/ 12 мая 2010

dirname() не будет работать на PHP_SELF, потому что это не обязательно полный каталог.

dirname("/enroll.php") правильно вернет пустую строку, что, в свою очередь, приведет к двойному //.

Что именно вы пытаетесь сделать?

...