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