Не удается получить доступ к сайту. Возможно, временно недоступна или постоянно перемещена по новому адресу

Рейтинг: 0Ответов: 2Опубликовано: 27.08.2023

Сайт сделан на 1с Bitrix (управление сайтом). При разлогировании (нажимаю на кнопку выход) появляется ошибка "Веб-страница по адресу... возможно, временно недоступна или постоянно перемещена по новому адресу." Ошибка отображается около 1-2с, после чего происходит редирект на страницу с авторизацией. Данная ошибка возникает только с мобильного браузера google.

Кнопка выхода находится в файле pages/profilePage/profilePage.php. Код который овтечает за кнопку выхода

<a href="../../index.php?logout=yes" class="defaultButton-gray d-fl">
    <div class="defaultButton-gray--img">
        <img src="<?= SITE_TEMPLATE_PATH ?>/images/icon/exit.svg" alt="card user">
    </div>
    <span>Выйти из аккаунта</span>
</a>

Редирект идет на страницу index.php в которой следующий код

if (isset($_GET['logout']) && $_GET['logout'] == "yes") {
    $USER->Logout();
    return LocalRedirect("./auth/");
}

if (!$USER->IsAuthorized()) LocalRedirect("./auth/"); // Если не авторизирован делаем редирект

Больше нигде не вызывается данный код.

Файл с авторизацией + есть стандартный компонент от битрикса.

<?
define("NEED_AUTH", true);
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

$userName = CUser::GetFullName();
if (!$userName)
    $userName = CUser::GetLogin();
?>
<script>
    <? if ($userName) : ?>
        BX.localStorage.set("eshop_user_name", "<?= CUtil::JSEscape($userName) ?>", 604800);
    <? else : ?>
        BX.localStorage.remove("eshop_user_name");
    <? endif ?>

    <? if (isset($_REQUEST["backurl"]) && strlen($_REQUEST["backurl"]) > 0 && preg_match('#^/\w#', $_REQUEST["backurl"])) : ?>
        document.location.href = "<?= CUtil::JSEscape($_REQUEST["backurl"]) ?>";
    <? endif ?>
</script>

<?
$APPLICATION->SetTitle("Авторизация");

LocalRedirect(SITE_DIR . "mobile-myclub/index.php");
?>
<p>Вы зарегистрированы и успешно авторизовались.</p>

<p><a href="<?= SITE_DIR ?>">Вернуться на главную страницу</a></p>

<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"); ?>

В чем может быть причина? Куда копать? Заранее спасибо!

Ответы

▲ 0Принят

Задача решена. Проблема возникала из-за того, что долго обрабатывался запрос браузером и на 1-2с появлялась ошибка.

Решение. При нажатии на кнопку сделал абсолютную ссылку с указанием на страницу с авторизацей <a href="https://site.ru/mobile-myclub/auth/index.php?logout=yes">

Проверку на разлогирование вынес в header и также указал абсолютную ссылку на страницу с авторизацей.

if (isset($_GET['logout']) && $_GET['logout'] == "yes") {
    $USER->Logout();
    header('https://site.ru/mobile-myclub/auth/index.php/');
}
▲ 0

Фактический адрес перехода вычисляется по относительному не от адреса файла, а от адреса страницы. Поэтому если кнопка выхода выводится, например, на странице /aaa/index.php, то адрес ../../index.php будет преобразован в /aaa/../../index.php. Ну и куда он будет показывать?