Переход с http на https - настройка .htaccess

90
На сайте с 22.08.2012
Offline
31
1132

Прошу помочь разобраться с проблемой. Мы перешли с http на https и настроили редиректы в

.htaccess Но часть редиректов отдается не корректно.

Например, при переходе с запроса http://site.ru/page-1 происходит редирект на

незащищенную страницу http://site.ru/page-2

В тоже самое время, редирект с главной http://site.ru происходит корректно на https://site.ru

Если прописать в .htaccess правила:

RewriteCond %{HTTPS} =off

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

или

RewriteCond %{HTTPS} off

RewriteCond %{HTTP_HOST} ^(.*)? [NC]

RewriteRule ^(.*) https://%1/$1 [R=301,L]

Выскакивает ошибка «Сайт site.ru выполнил переадресацию слишком много раз.»

Пожалуйста помогите разобраться.

Samail
На сайте с 10.05.2007
Offline
369
#1
9421770:
с запроса http://site.ru/page-1 происходит редирект на
незащищенную страницу http://site.ru/page-2

А какое правило у вас для редиректа с page-1 на page-2?

barabash
На сайте с 30.04.2011
Offline
71
#2

Недавно сталкивался с проблемами при переезде на https.

Это добавил в htaccess:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.site\.com)(:80)? [NC]
RewriteRule ^(.*) http://site.com/$1 [R=301,L]

RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Первый 2 строчки если нужен редирект с www на без www

Еще нужно добавить в php на всех страницах сайта следующее:


<?php
function request_url()
{
$result = ''; // Пока результат пуст
$default_port = 80; // Порт по-умолчанию

if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on')) {
$result .= 'https://';
$default_port = 443;
} else {
$result .= 'http://';
}
$result .= $_SERVER['SERVER_NAME'];

if ($_SERVER['SERVER_PORT'] != $default_port) {
// Если нет, то добавим порт в URL
$result .= ':'.$_SERVER['SERVER_PORT'];
}
$result .= $_SERVER['REQUEST_URI'];
return $result;
}
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий