我已经搜索过,阅读了很多,但仍然无法找到方法,以实现我的目标。现在我甚至认为这是不可能的。是吗?
我想要正确处理404错误,因此我在.htaccess文件中有ErrorDocument 404 /404.php
,我想向搜索引擎header("HTTP/1.1 404 Not Found")
发送正确的标题以忘记该页面,也我想将访问者重定向到/index.php?code=404
,以便我可以告诉他他所寻找的内容不可用,但仍然将他留在网站上。
现在似乎一切都很好,直到我想重定向用户:然后服务器发出302消息,覆盖我以前的404标题,所以虽然我可以将用户发送到所需的位置,但我仍然可以'告诉搜索机器人地址错误。
如果我在标题行后添加include("index.php?code=404")
它将无效,服务器会说该文件不存在。
我该怎么办?
答案 0 :(得分:5)
尝试这样的事情:
<?php
header("HTTP/1.0 404 Not Found");
echo '<html>
<head>
<meta http-equiv="Refresh" content="0;url=http://www.mysite.com/index.php?code=404" />
</head><body></body>
</html>';
?>
我正在使用meta
重定向,因为否则会收到标题已发送的错误。
我使用Fiddler在localhost上测试了这个,并获得了正确的404响应,然后被正确地重定向到了另一个页面。
答案 1 :(得分:3)
另一个建议我建议修改.htaccess来处理404.
添加如下内容:
ErrorDocument 404 /404.php
你的.htaccess会很好地为你处理事情。
您可以将404错误模板放在任何您想要的位置。例如,您可以将所有错误消息放在名为“errors”的文件夹中
ErrorDocument 404 /errors/404.php
当然可以很好地处理事情和其他错误消息。
答案 2 :(得分:0)
是否可以在没有代码参数的情况下将include("index.php")
添加到404页面上;然后在index.php中包含一个将检查当前页面的URL的部分。因此,如果页面URL包含404.html
,请包含错误消息,否则将主索引显示为正常。