PHP-自定义错误处理。重定向的404被AVG Anti-Virus劫持。如何停止?
时间:2020-03-06 15:04:15 来源:igfitidea点击:
我有一个网站,该网站使用PHP / Apache中的自定义404错误处理来显示特定页面。
例如http://metachat.org/recent
我感觉这是一个不好的方法,但这是我继承的代码...
尽管该页面在大多数浏览器上都能正确显示,但是我遇到了AVG Anti-Virus劫持该页面并将其重定向到非现场404页面的情况。
我试图在PHP中使用header命令强制设置标题(状态:200 OK),但是如果我对页面进行curl -I,则会得到以下信息...
HTTP/1.1 404 Not Found Date: Fri, 03 Oct 2008 11:43:01 GMT Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4 PHP/4.3.10-16 mod_ssl/2 .0.54 OpenSSL/0.9.7e X-Powered-By: PHP/4.3.10-16 Status: 200 OK Content-Type: text/html
我猜第一行是其强制重定向的AVG陷阱行。
如果不重写软件以使用Mod_rewrite(我不太了解),那么在显示此页面时,如何停止(在PHP中)标题中发送的" HTTP:/ 1/1 404 Not Found"行?
谢谢。
解决方案
除了使用URL重写(mod_rewrite)或者创建丢失的页面外,别无其他方法。发生的情况是客户端请求的页面不存在。将Apache配置为在出现404错误时提供特殊页面,但仍会发送404状态代码,然后由AVG捕获。
因此,我们可以执行以下操作:
RewriteEngine On RewriteCond %{REQUEST_URI} !-f RewriteCond %{REQUEST_URI} !-d RewriteRule (.*) index.php?missing_content=
它将使用missing_content查询字符串参数中的URL路径将不存在的所有内容重写(因此将给出404)到index.php中。
如果得到的是"找不到页面"错误,请不要使它发送Status 200 OK。请。
无论出于何种原因,这都是人们最讨厌的"技巧"之一。如果页面用户请求不存在,请告诉他以及他的浏览器。而对于搜索引擎而言,否则将认为自定义错误页面是实际响应,因此会抓取/缓存自定义错误页面。
如果有人安装了某些软件,但显示的不是404,那是他自己的问题,请不要尝试与之抗争,让服务在于浏览器: