Вернуть 404, если несуществующая страница # PHP - PullRequest
1 голос
/ 13 октября 2010

У меня есть динамическая система рецензирования, которая отображает 30 рецензий на страницу, а по достижении 30 рецензий она разбивается на страницы. Так что у меня есть такие страницы, как

/ рецензии / город / Бостон /

/ рецензии / город / Бостон / Page / 2 /

/ рецензии / город / Бостон / Page / 3 /

и так далее и тому подобное

К сожалению, Google, похоже, индексирует страницы через что-то вроде логического вывода - такого как

/ рецензии / город / Бостон / Page / 65 /

Эта страница абсолютно не существует, и я хотел бы сообщить об этом Google. В настоящее время он отображает страницу обзора, но без отзывов. Я не могу представить, что это очень хорошо для SEO. Итак, что я пытаюсь сделать, если сначала проверить # результатов моего MySQL-запроса, а если результатов нет, верните 404 и перенаправьте их на домашнюю страницу или другую страницу.

В настоящее время это то, что у меня есть.

if (!$validRevQuery) {
    header("HTTP/1.0 404 Not Found");
    header("Location: /index.php");
    exit;
}

Я на правильном пути?

Ответы [ 3 ]

4 голосов
/ 13 октября 2010

Редирект - это код состояния, как и 404. У вас не может быть двух кодов состояния.

Вам необходимо вывести статус 404 и одновременно показать тело ответа (= страницу ошибки).

if (!$validRevQuery) {
    header("HTTP/1.0 404 Not Found");
    .... output full HTML structure here .....
    exit;
}
0 голосов
/ 13 октября 2010

Как подсказывает Пекка, лучший вариант - сделать статус 404, а после этого поставить свой код страницы 404. Это плохая практика для SEO, если вы просто 301 (перенаправляете) страницу, потому что тогда поисковые системы продолжат посещать страницу, чтобы узнать, все еще ли там перенаправление.

0 голосов
/ 13 октября 2010

Вы не можете одновременно отправить код состояния 404 и выполнить перенаправление (обычно код состояния 3xx ).Вы можете выполнить только одно из них: отправить код состояния 404 и документ с ошибкой или с перенаправлением.

...