• статья
  • pantey

Создание собственных страниц ошибок 404 и 403 в Drupal 7

16.07.2012

Многим из вас известно, что при наборе несуществующего URL сайта «вылазит» ошибка 404, которая сообщает вам, что введённый адрес не правильный, либо запрошенная страница не существует. Вот так выглядит базовый вывод в Drupal 7 этой ошибки:

Из админки сайта можно прописать свою существующую страницу, которая будет показываться пользователю, если тот набрал неправильный URL.

Продемонстрирую:

1.Для начала нам необходимо создать эту самую страницу

Замечу, что если вы используете карту сайта (модуль XML-sitemap (создание «карты сайта» можно почитать здесь)), то добавлять её не нужно, также нет необходимости разрешать поисковым системам её индексировать, поэтому не забудьте добавить запись в файл «robots.txt», который должен у вас находиться в корне сайта – запись

Disallow: /node/id // url страницы

В результате эта страница у нас выглядит вот так:

Запомните URL данной страницы

2.Идём в Конфигурация->Информация о сайте и добавляем в поле «Страница по умолчанию для ошибки 404 (не найдено)» URL созданной нашей страницы.

И сохраняем настройки.

3. Теперь для проверки наберём адрес не существующей страницы и посмотрим, что у нас получилось:

Как мы видим всё у нас работает.

Но есть одно «НО», вывод не очень нагляден, другими словами «НЕ КАШЕРЕН». Так как помимо вывода самой страницы у нас выводятся и блоки и меню , а нам необходимо от всего этого избавиться. Поэтому перекроем данную страницу на свою, как перекрыть любую страницу сайта на свою можно почитать вот здесь.

Перекрываем страницу.

1.Создаём файл с название

page--node--ID.tpl.php//вместо ID прописываете id ноды

2.Вносим в него необходимую разметку и сохраняем его в формате UTF-8

3.Переносим созданный файл в корень нашего шаблона сайта, пересохраняем наш шаблон из админки и для уверености очистим кеш.

4. Смотрим что у нас получилось:

Как мы видим, всё работает именно так, как мы и хотели. Если вам необходимо создать также и свою страницу для ошибки «403-доступ запрещён», то шаги создания полностью аналогичны.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (11)

Profile picture for user 1541
Валентин
20.10.2013

А чем плохо создать в корне сайта файл "название.php" и запихать туда какие-нибудь кликабельные картинки? Например, можно в ручную при создании текста, оформить его красиво и вставить код php в этот файл. Далее в админке указать путь до ошибок на нужный файл, в котором разрешение - "только чтение".

Profile picture for user pantey
pantey
21.10.2013

а что если вам будем необходимо вывести регион или меню сайта ? Меню будете все-время руками править? Это хорошо, что для вас допустим это не вызовет проблем, вы запросто все эт дело перепишите. А если администратором будете не вы, а какой нить менеджер по продажа, который о HTML, ничего не слышал, а конструкция PHP вообще ведет его в ступор. Поэтому правильно и нужно давать возможность редактировать любые страницы из админки сайта.

Profile picture for user 1541
Валентин
21.10.2013

Логично:). Я просто смотрю со своей башни. Сайтом сам занимаюсь, а сколько раз видел в шаблонах страницы 404, в которых просто картинка и две кнопки: "На главную" и "Поиск по сайту" - мне нравиться.

Я далёк от php, но скопировать код из ckeditor+wysiwyg не составляет труда. В общем, получается, что оба способа можно использовать, смотря какие цели и какой уровень администратора сайта.

Profile picture for user 1541
Олег
17.06.2014

Спасибо за статью . Познавательно ! А вот здесь можно посмотреть интересное решение для 404 страницы http://kvinta-a.ru/stranitsa-404/

Profile picture for user shtrlz
shtrlz
25.02.2015

хорошая попытка, спамер!

Profile picture for user 1541
Andromedium
01.10.2014

Спасибо за статью! Единственное, чтобы не добавлять в robots лишнюю директиву на запрет, можно просто 404-й странице присвоить синоним search/название_вашей_страницы.
Например, так: http://ваш_домен/search/404
По умолчанию в Друпаловском robots.txt запрещен к индексированию полностью search (директива Disallow: /search/)

Profile picture for user 1541
Val
11.01.2015

Что касается страницы 403...
Если в настройках аккаунта установить "Только администраторы могут регистрировать аккаунты", то попытка анонима перейти по адресу /user/register может привести к проблемам.
Пример: собственная страница 403 содержит изображение, которое НЕ будет выводится, если либо в шаблоне, либо в стилях указан короткий путь к изображению (типа sites/default/files).
Причина: редирект инициируется с /user/, поэтому Друпал будет пытаться вывести изображение с адреса /user/sites/default/files...
Решение: либо прописывать полные пути, либо перед конструкцией sites/default/files выставлять ../

Profile picture for user 1541
paradokc
11.10.2015

Добрый день!
Воюю с созданием страницы для 404.
Скажу сразу прямо - в друпале очень слаб. Минимально, конечно, понимаю что делаю. В HTML разбираюсь.
Суть проблемы.
Я сделал все пои инструкции, но у меня выводится "двойной код". Т.е. я создал ноду с ID страницы, которая была создана для 404 ошибки, залил туда код: начиная от doctype и заканчивая всеми необходимыми тегами, установил кодировку Utf-8. Однако при загрузке страницы получается, что код, который я создал подгружается в блок страницы. Вместо того, что
полностью заменить код страницы.
Никак не могу понять, почему сформированный мною код заменяет код страницы не полностью, а только как бы его часть?

Что мне нужно сделать, чтобы код в файле page--node--308.tpl.php "перекрыл" код страницы полностью?
Я надеюсь, что я понятно обрисовал суть проблемы.

Profile picture for user pantey
pantey
11.10.2015

очистить кеш

Profile picture for user 1541
paradokc
11.10.2015

Пробовал. Не помогло.

Profile picture for user pantey
pantey
12.10.2015

тогда скиньте мне на почту ваш файл page--node--308.tpl.php, - я посмотрю