Apache PHP 5 header() Проблемные домены SSL

Я задавался вопросом, видел ли кто-нибудь эту проблему раньше и есть ли у вас ответ о том, как ее исправить. В основном у меня есть страницы, которые зашифрованы с помощью SSL, и те, которые не / не могут быть зашифрованы (из-за зависимости от плагина). Поэтому на страницах, которые не являются SSL, я обнаруживаю заголовок и пытаюсь перенаправить на HTTP-версию страница:

if($_SERVER["HTTPS"] == "on")
{
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.example.com");
  exit();
}

Однако PHP, кажется, блокирует перенаправление с защищенного домена на незащищенный сайт того же домена!

Если я пойду из https://www.example.com -> http://www.secondsite.com это работает, но, https://www.example.com -> http://www.example.com заставляет меня оставаться на зашифрованном сайте и приводит к бесконечному перенаправлению.

Какие-нибудь указатели??

Ric

1 ответ

Возможно, вы могли бы убедиться, что ваши заголовки еще не были отправлены, что может иметь место на той же странице. Смотрите это из руководства php:

function redirect($url, $debug=FALSE){

// If headers not sent yet... then do php redirect
if (!headers_sent()) {
    header('Location: '.$url);
    exit;
// if headers are already sent... do javascript redirect... if javascript is disabled, do html redirect.
} else {

    // Js redirect
    echo '<script type="text/javascript">';
    echo "<!--";
    echo 'window.location.href="'. $url .'";';
    echo "//-->";
    echo '</script>';

    // HTML redirect if js disabled
    echo '<noscript>';
    echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
    echo '</noscript>';
}
}//==== End -- Redirect  
Другие вопросы по тегам