Из-за чего происходит некорректный редирект в Битрикс?
Сейчас ситуация такая: всех. Появилась проблема, что имеется коробочная версия битрикса и если неавторизованный пользователь открывает урл где расположен бирикс, например bitrix.my-company.ru, то его редиректит на bitrix.my-company.ru/stream/ вместо bitrix.my-company.ru/auth/, так как он не авторизованный, посмотрел.access.php но не скажу, чтобы что-то понял. Вот как это выглядит:
<?
$PERM["index.php"]["2"]="X";
$PERM["index.php"]["3"]="X";
$PERM["upload"]["*"]="R";
$PERM["upload"]["5"]="T_8";
$PERM["/"]["13"]="T_10";
$PERM["/"]["12"]="R";
$PERM["/"]["*"]="R";
$PERM["/"]["2"]="R";
$PERM["about"]["9"]="T_9";
$PERM["company"]["9"]="T_9";
$PERM["apconnect"]["*"]="R";
$PERM["marketplace"]["*"]="R";
$PERM["pub"]["*"]="R";
$PERM["pub"]["5"]="T_8";
$PERM["online"]["*"]="R";
$PERM["desktop_app"]["*"]="R"
?>
Нужно понять: в чем может быть еще проблема?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
В коробочном Битрикс24 редирект неавторизованного пользователя на /stream/ вместо /auth/ обычно связан не с правами в .access.php напрямую, а с логикой стартовой страницы, модуля intranet/socialnetwork, настройками портала или обработчиком авторизации. .access.php отвечает за права доступа к разделам, но он не всегда определяет, куда именно отправлять пользователя при отсутствии сессии.
Первое, что нужно проверить: это действительно редирект сервера или редирект внутри Битрикса. Откройте URL в инкогнито и посмотрите цепочку:
curl -I https://bitrix.example.ru/ curl -I https://bitrix.example.ru/stream/ curl -I https://bitrix.example.ru/auth/
Если Location сразу указывает на /stream/, смотрите настройки главной страницы портала и правила в .htaccess/nginx. Если сначала отдается HTML, а потом браузер уходит на /stream/, значит срабатывает JS/компонент/логика Битрикса.
В коробке Битрикс24 стоит проверить несколько мест:
Если нужно жестко отправлять неавторизованных на /auth/, лучше делать это не в .access.php, а аккуратным обработчиком с исключениями для служебных URL, ajax, REST, assets и самой страницы авторизации.
addEventHandler('main', 'OnBeforeProlog', static function () { global $USER, $APPLICATION; if ($USER && $USER->IsAuthorized()) { return; } $path = $APPLICATION->GetCurPage(false); $allowed = ['/auth/', '/bitrix/', '/upload/']; foreach ($allowed as $prefix) { if (strpos($path, $prefix) === 0) { return; } } LocalRedirect('/auth/'); });
Но перед внедрением такого кода обязательно найдите текущий источник редиректа, иначе можно получить циклические переходы или сломать публичные страницы. В вашем фрагменте .access.php видно много прав, но по нему нельзя однозначно сказать, почему выбран /stream/. Я бы начал с поиска по проекту строк stream, LocalRedirect, AUTH и ShowAuthForm.