Web design
Interfaces
Comments 25
+12
Терпеть не могу, когда на странице без спроса начинает играть музыка.
+13
Я придерживаюсь мнения, что ни одна страница ни на одном сайте не должна выглядеть так:
0
Настоящая страница 404 должна у посетителя вызывать желание поскорее уйти оттудова и поскорей забыть это место… :)
+1
Сразу вопрос, как в ExpressJS (Node.JS) сделать свои 404 страницы. app.get('*' не помогает, ибо по этому роуту проходит вся статика, а это все, что написано в официальной документации.
0
Уточню. Сначала подключаете статику, потом подключаете раутер а в самом конце ловите 404.

0
// 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);
});
0
Может я что-то не так делаю, но у меня не работает в таком случае статика.
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);
});
+3
Ага, а можно еще: «Извините, но ни ваша страница, ни страница 404 ошибки не найдена.»
+1
Сто миллиардов раз эта тема поднималась. По-моему, Лебедев её уже давно закрыл.
+1
По-моему на этой странице
image
больше полезной информации, чем на этой
image

Страница 404, на которой лишь написано «Страница не найдена», не будет полезной для посетителя; даже ссылка «Вернуться на главную» не поможет.

+6
Главное, что на ней бесполезной информации тоже гораздо больше.
+2
Вы хоть раз полностью прочитали все, что написано на первом скриншоте? Не забывайте программист и пользователи сайта видят его по разному — программисту лучше вывести trace, а пользователю просто сказать — у нас что-то сломалось.
0
может не в тему, но мужики явно отжигают на последней странице 404=)
0
По-моему, еще стоит добавить, что нужно стремится чтобы на сайте количество подобных 404 страниц было минимальным, если такое возможно конечно. А то бывает вот, попадаешь — а там 404 еще и с надписью «страницы такой-то тут нет, но где-то у нас она тут может и есть, вот еще раз поиском воспользуйтесь» :))
0
И статья похоже (http://habrahabr.ru/post/142038/) и комменты к ней те же…
Only those users with full accounts are able to leave comments., please.