Сейчас на сайте, если происходит запрос к несуществующей статье или разделу текстом вывозится, что такой статьи или раздела не существует, но сервер отдает 200. Как настроить для таких страниц 404 ошибку? Нагуглить получилось такую конструкцию
<?php
header("HTTP/1.0 404 Not Found");
exit();
?>
Но я не понимаю, куда ее добавить нужно и как использовать.
Запрос к mysql
выглядит так
<?php
function get_articles($link){
$sql = 'SELECT * FROM articles WHERE alias_cat ="'.$_GET['id_cat'].'" AND alias ="'.$_GET['id'].'"';
$result = mysqli_query($link, $sql);
$articles= array();
while($row = mysqli_fetch_assoc($result)) {
$articles[] = $row;
}
return $articles;
}
?>
кусок php
код на странице статьи так:
<?php
$articles = get_articles($link);
?>
<?php if (count($articles) ===0 ) : ?>
<h1 class="h1">Страница не найдена</h1>
<?php else: ?>
<?php foreach($articles as $article): ?>
<h1 class="h1"><?=$article['name']?></h1>
<?php endforeach; ?>
<?php endif; ?>
При попытке добавить конструкцию в любой участок кода выдает ошибку о том, что header уже задан. Знаю, что добавлять нужно в самое начало, но ведь сначала нужно проверить существует или нет страница, а для этого подключиться к базе. Или я что-то не так понимаю?
Проверка должна быть до вывода страницы, работа скрипта должна прерываться, иначе выведет остаток информации.
<?php
if(count($articles) === 0)
{
header("HTTP/1.0 404 Not Found");
include("upload/404.php");
die();
}
?>
Строка include("upload/404.php"); подгружает нужную страницу для показа.
Переопределить заголовок уже отданной страницы достаточно сложно, но как альтернативный вариант быстро можно поставить запрет индекса.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как написать в правилоhtaccess, чтобы при заходе на сайт переправляло на public/index