Настройка ответа серверу ошибки 404

CA
На сайте с 18.08.2012
Offline
29
1083

Добрый день знатоки

Есть правильная страница

/news/Sravnenie_tovarov.htm

Если забить /news/Sravnenie_tovarov.htmbbbbb

то отображается страница с ошибкой

но если забить /news/Sravnenie_bbbb_tovarov.htm

то ни чего не происходит

в php проверяю есть ли запись в БД

то отправляю заголовки, но ни как :confused:

  $q=db_query("SELECT zagolovok, anons FROM bd_news WHERE url='".$_GET['newsID']."'");

if ($q){
$row=db_fetch_row($q);
if (!$row) {
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
//exit;
}
}

эта проверка идёт до вывода какой либо информации.

в .htaccess

RewriteRule ^news/(.*)\.htm$ index.php?newsID=$1 [L]

ErrorDocument 404 /404.php
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

А что по вашему должно происходить?

Вы сделайте редирект и 404 страницу и всё. И уже эти заголовки должны быть в ней, а не ну вас.

ErrorDocument 404 /404.php

этим вы правила для апатча делаете и не более того.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
CA
На сайте с 18.08.2012
Offline
29
#2

сделал

  $q=db_query("SELECT zagolovok, anons FROM bd_news WHERE url='".$_GET['newsID']."'");

if ($q){
$row=db_fetch_row($q);
if (!$row) {
header('HTTP/1.1 404 Not Found');
//header('Status: 404 Not Found');
header("Location: /404.php");
//exit;
}
}

так работает

этот код правильный с точки зрения поисковых машин?

---------- Добавлено 13.04.2014 в 17:40 ----------

нужно ли прописывать header('HTTP/1.1 404 Not Found');

перед строкой header("Location: /404.php");

если в начале файла 404.php

имеется строчка header('HTTP/1.1 404 Not Found');

зарание прошу прощения за глупый вопрос :)

[umka]
На сайте с 25.05.2008
Offline
456
#3

Вы можете выдать ИЛИ ошибку 404, примерно так:


header("HTTP/1.0 404 Not Found",true,404);
echo "<h1>Ошибка 404</h1>Страница не найдена";

ИЛИ сделать редирект, но тогда никакой ошибки браузеры и поисковики уже не получат.

Лог в помощь!
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#4
но тогда никакой ошибки браузеры и поисковики уже не получат.

Ну почему не получат? Браузеры и ПС отлично понимают 302 редирект и потом сразу 404 ошибку.

Если вы это имели ввиду.

[umka]
На сайте с 25.05.2008
Offline
456
#5
LEOnidUKG:
Ну почему не получат? Браузеры и ПС отлично понимают 302 редирект и потом сразу 404 ошибку.
Если вы это имели ввиду.

Не, я имел в виду то, что редирект на ошибку вовсе не означает, что запрашиваемая страница не найдена.

Страница не найдена, если сразу выдаётся код 404.

Если же сервер выдаёт 30х, то это подразумевает то, что страница найдена, но переехала на другой адрес.

А если вместо целевой страницы выдаётся 404, то выходит, что страница переехала на несуществующий адрес. Потому что если для вебмастера скрипт error404.php существует и что-то выдаёт, то для поискового робота его не существует.

Вот такая загогулина :)

p.s. да, а как в итоге роботы в этому манёвру отнесутся, можно только гадать.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6
p.s. да, а как в итоге роботы в этому манёвру отнесутся, можно только гадать.

Уже писали выше, отлично относятся. Они считывают последний ответ. Проверено на десятках проектов. Везде делал такую конструкцию т.к. шаблоны были активные.

Так, что не нужно думать, что Пс и браузеры такие тупые и отсталые :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий