我有一个网站,如果网址不正确,很长一段时间会将用户直接重定向到hompage。
该脚本使用header('location: /'); die();
。
我已将该行更改为header("HTTP/1.0 404 Not Found");die();
,服务器开始发送404错误消息。
但是,现在我得到浏览器404错误,而不是我的自定义404页面。 所以,我打开了.htaccess文件并添加了
ErrorDocument 404 /index.php
但没有成功,我仍然获得浏览器404页面而不是我的404页面 (我也尝试在/ etc / apache2 / sites-available / site-conf下设置它)
也尝试过:
$_SERVER['REDIRECT_STATUS'] = 404;
header("HTTP/1.1 404 Not Found");
header('location: /');
die();
仍然 - 没有成功
任何想法?
答案 0 :(得分:1)
header("HTTP/1.1 404 Not Found");
include('index.php'); // maybe you have to adjust the path;
exit;
使用标题(位置)时,您将状态设置为3xx。如果状态为404,则浏览器不需要遵循任何位置标头。它应仅在3xx响应中遵循位置标题。
答案 1 :(得分:1)
当您的脚本运行时,这意味着有一个页面。 在脚本中,您可以通过标题控制状态(“HTTP / 1.1 404 Not Found”); 这说浏览器“未找到”。 最后,页面以404状态提供。该页面的所有输出都是错误的。一切都由你的剧本完成。
当您在htaccess文件中定义404错误页面时,如果apache服务器处理未找到的错误,则显示此页面。这意味着您的浏览器必须访问服务器上不存在的文件。然后显示文件index.php。
标题状态和标题位置不能一起使用。 location命令将状态设置为重定向代码3xx。重定向后,服务器为代码为200的页面提供服务。
您可以做的是,将客户端重定向到服务器上的随机网址。 然后服务器显示404页面。
答案 2 :(得分:0)
首先检查Apache配置中是否启用了.htaccess文件(AllowOverride指令)。您尝试过的ErrorDocument应该可以正常工作!