2014-11-02 78 views
1

如何从PHP中输入错误代码404? 在我的htaccess中,我有一个规则将标签重定向到类别,但是如果在搜索数据库中的类别后,如果不存在,如何重定向到404错误页面并发送正确的标题?从404找不到PHP

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

我该如何处理这个网址?

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

+1

试试这个标题(“HTTP/1.0 404 Not Found”) – 2014-11-02 16:57:03

回答

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"); 
?> 

另外,你可以重定向到使用

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

的404错误页面,但你得把

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

进入404错误页面

+0

有什么办法重定向到我的404.php页面?重定向发送404头? – mauriblint 2014-11-02 16:57:06

+0

@mauriblint你可以重定向到404页面,并在那里放置404 Not Found标头:我已经用这个替代方案更新了我的答案 – Stubborn 2014-11-02 16:57:59

+1

+1这是使它在PHP 5.3中工作的正确方式。 – anubhava 2014-11-02 17:02:09

1

PHP >= 5.4.0开始,你可以使用http_response_code function此:

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

我的PHP 5.3中未定义的函数,其他方式? – mauriblint 2014-11-02 16:56:12

+1

嗯,对于PHP 5.3,您将不得不使用'Header'功能,请参阅其他答案。 – anubhava 2014-11-02 16:59:30