我通过.htaccess
配置了我的网站来执行此操作:
ErrorDocument 403 http://www.mydomain.com/error.php?e=403
ErrorDocument 401 http://www.mydomain.com/error.php?e=401
ErrorDocument 400 http://www.mydomain.com/error.php?e=400
ErrorDocument 500 http://www.mydomain.com/error.php?e=500
error.php
记录错误并显示用户/客户友好的错误页面。
另外,我添加了这段代码:
if($_GET['e'] == '404' || $_GET['e'] == '403' || $_GET['e'] == '500' )
{ $error_no = $_GET['e']; } else { $error_no = '200'; }
header(' ', true, $error_code);
所以,当我访问mydomain.com/pagedoesnotexist
时,我看到了错误页面(但地址栏仍然显示了不存在的URL),我收到一个404页面被触发的报告,但我查看了我的服务器日志文件,这就是它说的:
MY.IP.000.00 - - [date and time] "GET /pagedoesnotexistHTTP/1.1" 200 2450 "-" "USERAGENTINFO"
我的服务器日志中没有任何地方可以看到关于404的任何内容......只有200 ... 为什么会这样?如何让它发送回404代码? 现在我假设机器人等总是得到200,这意味着在访问不存在的网站时可以做出好的反应......或者我错过了什么?
*和主题:2450代表什么? O_O *
答案 0 :(得分:1)
但请注意,您错误地设置ErrorDocument
导致外部重定向并返回200
而不是404
,403
等。设置ErrorDocument
如下没有域名:
ErrorDocument 403 /error.php?e=403
ErrorDocument 401 /error.php?e=401
ErrorDocument 400 /error.php?e=400
ErrorDocument 500 /error.php?e=500
这将在您的浏览器中保留原始未找到的URL,同时返回正确的HTTP状态代码。
关于您的代码:
您在$error_no
函数中设置变量$error_code
并使用header()
。你应该使用:
if($_GET['e'] == '404' || $_GET['e'] == '403' || $_GET['e'] == '500' )
{ $error_no = $_GET['e']; } else { $error_no = '200'; }
header(' ', true, $error_no);