Комментарии 25
Можно сделать что-нибудь необычное и с претензией на вирусность.
Настоящая страница 404 должна у посетителя вызывать желание поскорее уйти оттудова и поскорей забыть это место… :)
Сразу вопрос, как в ExpressJS (Node.JS) сделать свои 404 страницы. app.get('*' не помогает, ибо по этому роуту проходит вся статика, а это все, что написано в официальной документации.
Можно с помощью node-boilerplate, вот пример github.com/robrighter/node-boilerplate/blob/master/templates/app/server.js
Уточню. Сначала подключаете статику, потом подключаете раутер а в самом конце ловите 404.
// Error handling
app.error(function(err, req, res, next){
console.log(err);
if (err instanceof NotFound) {
res.render('errors/404', {
title : 'Not Found',
layout: 'login/layout',
status: 404
});
} else {
res.render('errors/500', {
title : 'The Server Encountered an Error',
layout: 'login/layout',
error: err,
status: 500
});
}
});
function NotFound(msg) {
this.name = 'NotFound';
Error.call(this, msg);
Error.captureStackTrace(this, arguments.callee);
}
в конце всех роутов:
app.all('*', function(req, res){
throw new NotFound('URL: ' + req.url);
});
Может я что-то не так делаю, но у меня не работает в таком случае статика.
Node v0.6.17
Express v2.5.8
Node v0.6.17
Express v2.5.8
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.cookieParser());
app.use(express.bodyParser());
//app.use(express.methodOverride());
app.use(express.static('/www/r/node/public'));
app.use(app.router);
});
app.error(function(err, req, res, next){
console.log(err);
if (err instanceof NotFound) {
res.render('404', {
title : 'Not Found',
layout: false,
status: 404
});
} else {
res.render('500', {
title : 'The Server Encountered an Error',
layout: false,
error: err,
status: 500
});
}
});
function NotFound(msg) {
this.name = 'NotFound';
Error.call(this, msg);
Error.captureStackTrace(this, arguments.callee);
}
app.get('/', routes.index);
// 404
app.all('*', function(req, res){
throw new NotFound('URL: ' + req.url);
});
Мы у себя сделали набор страниц подобного рода:
snk-games.ru/502.html
snk-games.ru/404.html
snk-games.ru/403.html
snk-games.ru/502.html
snk-games.ru/404.html
snk-games.ru/403.html
Ага, а можно еще: «Извините, но ни ваша страница, ни страница 404 ошибки не найдена.»
Сто миллиардов раз эта тема поднималась. По-моему, Лебедев её уже давно закрыл.
По-моему на этой странице

больше полезной информации, чем на этой


больше полезной информации, чем на этой

Страница 404, на которой лишь написано «Страница не найдена», не будет полезной для посетителя; даже ссылка «Вернуться на главную» не поможет.
Главное, что на ней бесполезной информации тоже гораздо больше.
Вы хоть раз полностью прочитали все, что написано на первом скриншоте? Не забывайте программист и пользователи сайта видят его по разному — программисту лучше вывести trace, а пользователю просто сказать — у нас что-то сломалось.
может не в тему, но мужики явно отжигают на последней странице 404=)
По-моему, еще стоит добавить, что нужно стремится чтобы на сайте количество подобных 404 страниц было минимальным, если такое возможно конечно. А то бывает вот, попадаешь — а там 404 еще и с надписью «страницы такой-то тут нет, но где-то у нас она тут может и есть, вот еще раз поиском воспользуйтесь» :))
Думал это перевод с yoast.com, а оказалось просто набор картинок с забавными зверушками. Так что я просто оставлю это здесь
tigors.net/custom-error-404-page/
tigors.net/custom-error-404-page/
И статья похоже (http://habrahabr.ru/post/142038/) и комменты к ней те же…
autorambler.ru/404 хорошая страница у авто-рамблера. Жаль, не сделали многопользовательские гоночки…
Подскажите плз как на IIS6 настроить 404 ошибку?
мы вот тут тоже настроили 404 ошибку. Без претензий на вирусность, но вроде симпатично)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Улучшаем страницу 404-ой ошибки