2014-11-02 5 views
1

Как я могу сбросить с php код ошибки 404? В моем htaccess у меня есть правило, которое перенаправляет теги на категории, но если после поиска категория в БД, если не существует, как я могу перенаправить на страницу ошибок 404 и отправить правильные заголовки?Throw 404 Not Found from PHP

RewriteRule ^([a-z]{2})/(.*)$ index.php?lang=$1&id=$2 [L] 

Как я могу справиться с этим URL-адресом?

site.com/en/this-category-not-exists

+1

попробуйте этот заголовок («HTTP/1.0 404 Not Found») ' –

ответ

1

Если запись не существует, вы можете использовать этот код:

<?php 
header("HTTP/1.0 404 Not Found"); 
echo 'This page was not found'; 
?> 

Если вы хотите использовать внешний 404 страница ошибки, вы можете использовать вместо этого:

<?php 
header("HTTP/1.0 404 Not Found"); 
include("404errorpage.php"); 
?> 

В качестве альтернативы, вы можете перенаправить на страницу 404 ошибки с помощью

header("Location: http://example.com/404errorpage.php"); 

Но тогда вам придется поставить

header("HTTP/1.0 404 Not Found"); 

на страницу 404 ошибки

+0

Можно ли перенаправить на мою страницу 404.php? Перенаправить отправку 404 заголовков? – mauriblint

+0

@mauriblint вы можете перенаправить на страницу 404 и поместить туда 404 Not Found header: я обновил свой ответ с помощью этой альтернативы – Stubborn

+1

+1 это правильный способ заставить его работать в PHP 5.3 – anubhava

1

Начиная с PHP >= 5.4.0 вы можете использовать http_response_code function для этого:

if ($notExistDB) { 
    http_response_code(404); 
    exit; 
} 
+0

Неопределенная функция в моем PHP 5.3 , Любым другим путем? – mauriblint

+1

Хмм для PHP 5.3 вам нужно будет использовать функцию «Заголовок», см. Другой ответ. – anubhava