Viv*_*nne 13 php redirect http-status-code-404
我想使用以下内容将数据库中不再存在的页面重定向到自定义404页面:
ob_start();
....
if ( !$found ):
  header( "Location: /404.php", true, 404 );
  exit();
endif;
Run Code Online (Sandbox Code Playgroud)
但这实际上并没有重定向,而只是显示一个空页面(因为在向浏览器输出之前调用了exit()).
我也尝试过以下方法:
if ( !$found ):
  header( "HTTP/1.1 404 Not Found" );
  exit();
endif;
Run Code Online (Sandbox Code Playgroud)
在我的.htaccess文件中有一个'ErrorDocument 404 /404.php',但这也只是显示一个空页面.
如果我这样做:
if ( !$found ):
  header( "HTTP/1.1 404 Not Found" );
  header( "Location: /404.php" );
  exit();
endif;
Run Code Online (Sandbox Code Playgroud)
它确实重定向,但有一个302标题.
任何帮助将不胜感激.
Jac*_*sen 10
我知道这是一个老问题,但我发现它很方便:
php将状态标题设置为404并添加刷新到正确的页面,就像2秒后一样.
header('HTTP/1.1 404 Not Found');
header("Refresh:0; url=search.php");
Run Code Online (Sandbox Code Playgroud)
然后,在重定向到fx搜索页面之前,您将显示404页面几秒钟.
就我而言,Symfony2,带有异常监听器:
$request  = $event->getRequest();
$hostname = $request->getSchemeAndHttpHost();
$response->setStatusCode(404);
$response->setContent('<html>404, page not found</html>');
$response->headers->set('Refresh', '2;url='.$hostname.'/#!/404');
Run Code Online (Sandbox Code Playgroud)
如果你希望很短的时间,时间(2)可以是0.2.
小智 5
我已经尝试并确保检查 error_log 文件的正确方式是发送 404 标头,然后将错误页面包含到下一行。
<?php
header('HTTP/1.1 404 Not Found');
include 'search.php'; // or 404.php whatever you want...
exit();
?>
Run Code Online (Sandbox Code Playgroud)
最后,您必须将 exit() 用于基于文本的浏览器。