Возник вопрос, как изменить дизайн страниц 403 и 404. Сделал html-страницу, а как сделать так, чтобы она появлялась вместо стандартных страниц?
В админке есть функция, позволяющая поставить node-страницу на эти ошибки. Но мне надо полностью другую страницу поставить, то есть чтоб не было ни шапки, ни чего из общего дизайна.
И еще вопрос, как сделать так, чтобы неавторизованные посетители (гости) при заходе на сайт видели опять же отдельную (от общего дизайна) страницу?
Комментарии
.htaccess
Туда я полез первым делом.
Но там только строчка
# Make Drupal handle any 404 errors. ErrorDocument 404 /index.php
Она вроде как выбирает страницу для 404? А как поменять 403?
Вот на этой странице админки есть что-то похожее - admin/settings/error-reporting
Это не то. Я писал про это в первом посте
Дописал в .htacces строчку
ErrorDocument 403 /403.html
но ничего не поменялось. Хелп
О, сорри.
Если работает
ErrorDocument 404 /custom-404.php
то наверное будет работать и
ErrorDocument 403 /custom-403.php
А с главной можно сделать так: создать ноду, запрещенную для просмотра гостями. И на admin/settings/site-information прописать в качестве главной эту ноду. Тогда главная будет отдавать 403 гостям.
Если
ErrorDocument 403 /custom-403.php
не работает, то как вариант можно попробовать прописать на admin/settings/error-reporting адрес custom-403.phpА .htaccess добавить строчку выше
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
примерно такуюRewriteRule ^(custom-403.php)$ custom-403.php [L,QSA]
а html страница не катит? только пхп?
блин,
еррор 500 удалось поменять, а 403 не хочет.
через .htaccess
Enable default 404 handling for some file types
там другой вопрос рассматривается
Он к Вам самым прямым образом относится. Вы 404 страницу друпала на свою пытаетесь заменить, а других путей это сделать нет.
Нужно идти по моей ссылке, и пытаться понять как это сделать самому.
мне бы в первую очередь 403 поменять, а не 404.
ходил по ссылке. Там описывается, как подключить 404 к gif|jpe?g|png|s?html|css|js|cgi файлам. но страницу об ошибке там никто не подменяет.
странно, почему стандартные директивы ErrorDocument в .htaccess у друпала почему то игнорируются (хотя ошибку 500 удалось поменять таким образом)
Вобщем проблема решена своими усилиями.
Итак:
<?php
header('Location:http://Ваша страница');
exit();
?>
Если у вас стоит модуль на визуальный редактор, то при вводе кода, переключитесь на обычный.
В принципе можно обойтись и без модуля customerror, создав страницу, как и задумано в друпале,
и внедрив в нее тот же пхп код переадресации. В этом случае надо предварительно активировать модуль PHP filter.
После того, как поставите page-node-<номер ноды>.tpl.php будет страница для вашей ошибки. Переопределяйте его как хотите.
Вариант 2.
Создать тип материала, например - errorpage. После этого создаете ноды этого типа и присваиваете их соответствующим ошибкам.
После этого page-node-errorpage.tpl.php будет отвечать за вывод всех страниц ошибок. В нем творите, что хотите
Первый вариант осуществился с первой попытки. Спасибо, Вадыч, за конструктивную подсказку!
А со вторым вариантом возникли проблемы: не смотря на полное изменение содержимого page-node-errorpage.tpl.php, при отображении страницы ошибки 404 с использованием этого шаблона, в дизайн примешивались элементы оформления основного дизайна (шаблона).
Если будет возможность и желание, прокомментируйте, пожалуйста, с чем это может быть связано?
Спасибо.
С уважением
Проблема в том, что при вызове 403 и 404 через http://drupal.org/project/customerror происходит загрузка друпала.
Вот это здорово.
Вы имеете ввиду ошибку
mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary. ?
Похоже что да. Спустя день сайт упал от превышения внутренних редиректов. Странно, в описании customerror ничего про mod_rewrite не было написано.
И как теперь его поднять?
Пробовал увеличить лимит через RewriteOptions MaxRedirects, но ничего не вышло.
Я так и не увидел как можно сделать 404 страницу просто html страницей без привязки к Друпалу.
Конкретно мне надо просто 404 страница на html, т.к. у меня сайт из 3-х отдельных разделов:
- phpbb
- фотогаллерея
- Друпал
Пока не было Друпала, на 404 всё отправлялись нормально (путь к 404 прописывал в хостинг-панели).
Теперь Друпал "подминает под себя" 404 и "захватывает" её, т.е. при этой ошибке срабатывает вывод 404 страницы Друпалом.
Подскажите, как полностью отключить вывод 404 Друпалом?
Вот здесь Drupal перехватывает ошибку 404:
# Make Drupal handle any 404 errors.
ErrorDocument 404 /index.php
Это в .htaccess
Вот вместо index.php пытался другое вставить с абсолютным и относительным путём. Не сработало
И, вообще, всячески над этим файлом и конкретно этим местом старался, но, пока, безрезультатно.
Кеш чистил (для советчиков почистить кеш :)).
Приведите, пожалуйста, если можно, конкретный пример. Спасибо!
У меня та же проблема. Тонну редиректов плодить - это неправильно. Изменение в htaccess не помогает.
Ежели у вас настроено CleanUrl — то отключать вывод 404 страницы через Drupal нельзя (ИМХО).
Варианты:
switch(code) {
case 403:
print("<html><head><title>Access denied</title></head><body><p>Access denied</p></body></html>");
exit(0);
break;
case 404:
print("<html><head><title>Not found</title></head><body><p>Not found</p></body></html>");
exit(0);
break;
}
}
Вроде должно работать.
Огромное спасибо, впервые вижу такой точный и развернутый ответ
Помогите мне у меня ошибка 404 Not Found nginx/0.7.59
пишите мне в асю!!!! ПОжалуйста! 28349409!!!!!!Жду срочно
вопрос следующий:
в поиск попадают страницы 403 и 404, которые я создал, как тип материала error
Как исключить эти 2 страницы из поиска? Если убирать галочку "опубликовано", то гость не видит страниц 404 и 403, которые я ему пытаюсь показать...
А как они туда попадают? Этого, вообще-то, не должно быть.
Все страницы с закрытым доступом (403) перечисляются в robots.txt. А 404ых вообще не должно быть.
У меня так и не получилось сделать "свою" страницу 404.
Варианты для нормального человека:
1. 404 - показывает Drupal.
2. Вместо 404 настроить редирект на главную (или нужную) страницу в файле ".htaccess" хостинга.
PanDa777
вы не правильно меня поняли, или я выразился неудачно
я создал тип контента error и 2 ноды 403 и 404
в настройках admin/settings/error-reporting выставляю их соответственно
в теле этих нод такой примерно текст "Вы можете воспользоваться поиском, если искали что-то конкретное или зайти на главную страницу нашего сайта"
и в поиске, например, по слову "поиск" или слову "конкретное", соответственно вылазят эти 2 страницы вместе с остальными нодами.
Сформулирую иначе, как исключить из поиска определенный тип материала или 2 ноды?
А не вариант ли создать шаблоны для статических страниц с соответствием номера ноды к номеру в шаблоне типа page-node-1.tpl.php и затемизировать не забыв указать в robots.txt?
допустим так, вариант создания страница посредством друпала есть разный. Как добиться такого результата, чтобы самим друпаловским поиском она не искалась?
Если я правильно представляю, то стандартным Drupal-поиском - никак.
тогда, как сделать страницу 403 и 404 посредством друпала, чтобы таки не индексировались?
Любой из способов, описанный в моём сообщении от 05/06/2009 - 10:52, подходит. Поиск не будет индексировать эти страницы.
Может быть поможет: http://www.kinetasystems.com/blog/creating-custom-error-pages-in-drupal
Я использовал Customerror.module и переопределял page-customerror-404.tpl.php
(Drupal 7)
Add template page--customerror.tpl.php and changing it design.