Страница для 404, какой должен быть ответ сервера?

Автор planetaryi, 18-10-2013, 10:43:43

« назад - далее »

planetaryiTopic starter

Подскажите, как поступить

У меня страница 404 дает ответ 200 ок
то есть если открываешь несуществующую страницу - то откроется 404, но формально там видимо какая-то ошибка, ответ сервера наверное должен быть 404?

Гугл ругается!

Дата последнего сканирования: 06.09.13
Дата обнаружения: 01.07.13

Целевой URL не существует, и ваш сервер не возвращает код ошибки 404 (файл не найден).
хотя на самом деле она конечно сразу открывается. И таких ошибок много, более 200

Что делать? как это исправить?
  •  


Cyrus

Если при запросе несуществующей страницы сервер не отдает ответ HTTP/1.1 404 Not Found, то для поисковых систем такая страница существует и они её могут проиндексировать, другое дело что в выдачу конечно такая страница вряд ли попадет, хотя гугл всё готов туда запихать что найдет и может и включит кучу таких страниц, так как они "существуют". Если при запросе несуществующей страницы идет редирект на специальную страницу с ошибкой 404 и она отдает ответ сервера HTTP/1.1 200 OK, то по мнению поисковиков это редирект, на сайте будет куча редиректов, а поисковые системы не очень любят редиректов кучу на сайте, не накажут, но и ничего хорошего это сайту не принесет, робот поредиректится и уйдет. Нужно чтобы страница ошибки 404 отдавала ответ сервера HTTP/1.1 404 Not Found.
  •  


planetaryiTopic starter

#2
Цитата: Cyrus от 18-10-2013, 11:01:01
Если при запросе несуществующей страницы сервер не отдает ответ HTTP/1.1 404 Not Found, то для поисковых систем такая страница существует и они её можут проиндексировать, другое дело что в выдачу конечно такая страница вряд ли попадет, хотя гугл всё готов туда запихать что найдет и может и включит кучу таких страниц, так как они "существуют". Если при запросе несуществующей страницы идет редирект на специальную страницу с ошибкой 404 и она отдает ответ сервера HTTP/1.1 200 OK, то по мнению поисковиков это редирект, на сайте будет куча редиректов, а поисковые системы не очень любят редиректов кучу на сайте, не накажут, но и ничего хорошего это сайту не принесет, робот поредиректится и уйдет. Нужно чтобы страница ошибки 404 отдавала ответ сервера HTTP/1.1 404 Not Found.

да у меня редиректы, получается. чтобы вписать эту страницу в шаблон, отказов по 404 очень мало.
а как это сделать скажите? движок джумла.

да я уже создавала подобную тему.
абракадабра выдает ошибку 302, а открывает 404 страницу (которая и дает ответ 200ок)
я вообще не знаю этих тонкостей, как настроить сервер. даже ничего нагуглить не могу
  •  

files

#3
Если ваш сервер возвращает код 200 для страницы 404, это считается неправильным. Когда пользователь открывает несуществующую страницу, сервер должен возвращать код ошибки 404 (файл не найден), чтобы указать, что запрошенный ресурс отсутствует.

Для исправления этой проблемы вы можете настроить свой сервер таким образом, чтобы он правильно возвращал код 404 для несуществующих страниц. Это может потребовать изменения настройки сервера или использования конкретного веб-фреймворка или CMS.



А что у вас тут?
/templates/system/error.php

приведите код из этого файла
Инструменты для WEB и SEO в одном месте
  •  

planetaryiTopic starter

Цитата: files от 18-10-2013, 13:35:02
А что у вас тут?
/templates/system/error.php

приведите код из этого файла

<body>
<?php
if ($this->_error->get('code') == '404') {
header("HTTP/1.0 404 Not Found");
header('Location: http://www.site.ru/404');
exit;
}
?>
</body>
</html>

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

Может быть вы подскажете как сделать так, чтобы внешне осталось все как есть, но ответ сервера был правильный.
  •  


files

Замените /templates/system/error.php
на:

Цитировать<body>
<?php
if ($this->_error->get('code') == '404') {
header("HTTP/1.1 301 Moved Permanently");
  header('Location: ' . $this->baseurl . '/ссылка на вашу/404.htm');
exit;
}
?>
</body>
</html>


а вверху индексного файла темы пропишите код:

Цитировать<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/ссылка на вашу/404.htm') {
header("HTTP/1.0 404 Not Found");
} ?>

Удачи!
Инструменты для WEB и SEO в одном месте
  •  

planetaryiTopic starter

Цитата: files от 18-10-2013, 14:08:03
Замените /templates/system/error.php
на:


а вверху индексного файла темы пропишите код:

Удачи!

спасибо!

индексного, в смысле index.php?

а еще скажите по синтаксису

header('Location: ' . $this->baseurl . '/ссылка на вашу/404.htm');
это значит писать header('Location: ' . $this->baseurl . 'http://www.site.ru/404');
  •  

planetaryiTopic starter

  •  


files

1) можете писать и header('Location: ' . $this->baseurl . 'http://www.site.ru/404'); (где http://www.site.ru/404 - ссылка на созданную вами страницу с ошибкой 404

2) в самом верху index.php (до вызова какого-либо кода)
Инструменты для WEB и SEO в одном месте
  •  


planetaryiTopic starter

Здравствуйте, может я снова что не так делаю

вот что в ерроре

<body>
<?php
if ($this->_error->get('code') == '404') {
header("HTTP/1.1 301 Moved Permanently");
  header('Location: ' . $this->baseurl . 'http://www.site.ru/404');
exit;
}
?>
</body>

...на самом верху тоже прописала

<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == 'http://www.site.ru/404') {
header("HTTP/1.0 404 Not Found");
} ?>

и теперь абракадабра показывает ошибку 301

это нормально да?

и гугл показывает

Ошибка 404
ошибок:230

то есть он их определил...и это нормально?
  •