我有一个网站,它使用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”行?
感谢。
答案 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页面添加更多内容,看看是否有帮助。