В MODX Revolution есть понятие "Группы ресурсов" - ресурсы, которые доступны для определенных Групп пользователей (как правило, авторизированных). Но если не залогиненный пользователь пытается получить доступ к странице из такой группы - MODX возвращает 404 ошибку вместо 401, выводя сообщение о том, что страница не найдена, а правильным поведением в данной ситуации является вывод сообещния, что для доступа к данной странице надо авторизироваться на сайте.
Как настроить 401 код вместо 404
Для страниц, где важно неавторизированному пользователю отображать форму для входа вместо 404 страницы, можно отказаться от использования группы ресурсов и в начало шаблона встроить свой рукописный некешируемый сниппет. Код такого сниппета приведен ниже:
if (isset($modx->user->id) && $modx->user->id > 0 // user must be logged in
&& ( $modx->user->isMember('Пользователи')
|| $modx->user->isMember('Administrator') )){
// user вошел как пользователь или админ - все ок
return;
}
// не ок - возвращаем 401 ошибку
$modx->sendUnauthorizedPage();
Вызов сниппета в шаблоне
Если мы назвали сниппет к примеру redirectGuestToLogin, то в самом верху нужного шаблона вызываем его как:
[[!redirectGuestToLogin]]