Как сделать редирект на страницу "Войти" вместо ошибки 404

На моем сайте в главное меню вынесена ссылка на страницу «Лента» (site.ru/feed), эта страница доступна только авторизованным пользователям, если пользователь не авторизовался, то при переходе на страницу site.ru/feed, выходит ошибка 404, что не совсем логично, ведь такая страница существует, но доступ к ней ограничен.


Картинка для примера

Вопрос звучит так, как сделать редирект для неавторизованных пользователей со страницы site.ru/feed на страницу Войти/Регистрация? Или просто вывести сообщение, что для просмотра этой страницы необходимо авторизоваться/зарегистрироваться.

6 комментариев

avatar
Добавь это в ActionError:
<meta http-equiv="refresh" content="1;URL=http://сайт.ру/login" />
avatar
И ещё добавь оператор «пользователь авторизирован\пользователь не авторизирован».
avatar
Добавил строку, все работает. Спасибо. По второму пункту не понял как нужно сделать, php только начинаю изучать, самостоятельно не напишу.
avatar
Вот бы еще после авторизации обратно на страницу site.ru/feed сделать редирект, было бы идеально
avatar
Думаю для таких страниц более правильно показывать не 404, а что-то вроде «Доступ ограничен. Страница доступна только авторизованным пользователям» + ссылки на регистрацию и авторизацию.
avatar
Что бы сделать
редирект для неавторизованных пользователей со страницы site.ru/feed на страницу Войти/Регистрация
нужно в файле classes\actions\ActionUserfeed.class.php
вместо public function Init() {
/**
* Доступ только у авторизованных пользователей
*/
$this->oUserCurrent = $this->User_getUserCurrent();
if (!$this->oUserCurrent) {
parent::EventNotFound();
}
$this->SetDefaultEvent('index');

$this->Viewer_Assign('sMenuItemSelect', 'feed');
}

вставить
public function Init() {
$this->oUserCurrent=$this->User_GetUserCurrent();
if(!$this->oUserCurrent) {
return Router::Location(Router::GetPath('login'));
}
}
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.