Правльный шаблон 404 не только отображает какой-то текст о том, что она не найдена, но и шлет правильную информацию от сервера.
Немного не так 🙂 Вначале сервер «отвечает» и только потом на код ответа ищется и выдаётся нужная страница. (это если упрощенно)
Не надо никуда никого перенаправлять. Страница 404 отдаётся именно по тому url, который отсутствует. Это нормально и правильно.
Почему не надо ? Единая 404 страница — это более правильно, т.к. в противном случае закрыть все страницы ошибок от индексации невозможно.
Страницы ошибок не нужно закрывать от индексации. Ни в коем случае.
А единой страницы 404 не может быть по определению. 404 — это отсутствие конкретной страницы. Если сделать редирект, это будет уже не 404, а 301.
Вот представьте, что у вас есть шкаф. Первая полка пустая. Вас спрашивают: «На первой полке что-то есть?» Если стоит нормальный 404, вы отвечаете «Здесь, на первой полке, пусто». А если редирект, то вы говорите «Вместо первой полки теперь пятая, посмотри там». А там (на пятой) лежит бумажка с надписью «здесь пусто». То есть там не пусто (бумажка же есть), а вы говорите, что якобы пусто.
В общем, если отвлечься от метафор, то для несуществующих страниц должна отдаваться 404 ошибка строго по url этих страниц. Это правильно, так нужно делать, это хорошо. Такие страницы сами выпадут из индекса.
А то, что хотите сделать вы — грубая ошибка.
Т.е. итог таков. Если у меня будет формироваться 404 страницы движком, то этих 2-х редиректов не будет. Если будет единая 404 страница, то будут редиректы. Правильно ?
Грубо говоря, да.
Но на самом деле не совсем верно. 404 — это не как таковая страница, а ошибка. Ошибка 404 в переводе на русский гласит «страница не найдена». То есть страницы и нет. Движок говорит роботу «здесь нет страницы». А пользователю показывает шаблон (404.php) вместо этой страницы. И всё это происходит не по какому-то единому адресу, а по адресу несуществующей страницы.
Почему не нужно создавать редиректы и закрывать от индексации очень легко понять, зная, что такое 404. Например, если вы введёте просто случайный набор букв после домена (через /), то есть что-то в духе site.ru/njksdnvkns, это будет 404 ошибка. Потому что такой страницы нет. Но вас же не беспокоит, что нет страницы со случайным набором букв. Вот и остальные 404 не должны беспокоить.
Но при это нет страницы именно site.ru/njksdnvkns, а не site.ru/404. Если вы создадите её, она как раз будет. То есть не надо обманывать браузер и ботов, редиректами с несуществующей страницы на существующую, но якобы 404.
Немного не так 🙂 Вначале сервер «отвечает» и только потом на код ответа ищется и выдаётся нужная страница. (это если упрощенно)
Нууу я это и пытался объяснить в этом предложении 🙂
Протокол HTTP подразумевает, что если страница ненайдена, то должен прийти правильный ответ от сервера.