PHP - 自定义错误处理。重定向404被AVG Anti-Virus劫持。怎么停?

时间:2008-10-03 11:54:31

标签: php http-headers http-status-code-404 antivirus

我有一个网站,它使用PHP / Apache中的自定义404错误处理来显示特定页面 例如http://metachat.org/recent

我觉得这是一种不好的做法,但这是我继承的代码......

虽然页面在大多数浏览器上都能正确显示,但我遇到的情况是AVG Anti-Virus正在劫持该页面并将其重定向到异地404页面。

我试图在PHP中使用header命令强制标题(状态:200 OK),但是如果我做了卷曲-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”行?

感谢。

3 个答案:

答案 0 :(得分:4)

除了使用URL重写(mod_rewrite)或创建缺少的页面之外别无他法。发生的事情是客户端请求一个不存在的页面。 Apache被配置为在404错误时提供特殊页面,但它仍然发送404状态代码,然后AVG陷阱。

所以,你可以这样做:

RewriteEngine On
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule (.*) index.php?missing_content=$1

这将使用missing_content查询字符串参数中的URL路径将您的index.php重写为不存在的所有内容(并因此给出404)

答案 1 :(得分:4)

如果您收到 Page Not Found 错误,使其发送状态200确定。请。

这是人们出于某种原因做的最烦人的“伎俩”之一。如果页面用户请求不存在,请告诉他以及他的浏览器。对于搜索引擎,否则将抓取/缓存您的自定义错误页面,认为这是实际响应。

如果有人安装了一些显示其他东西而不是404的软件,这是他自己的问题,不要试图打击它让你的服务骗到浏览器:)

答案 2 :(得分:0)

如果内容非常小,某些浏览器不会显示404页面的内容。如果有更大的页面内容,他们会显示它。此规则因浏览器而异。尝试向404页面添加更多内容,看看是否有帮助。