代码之家  ›  专栏  ›  技术社区  ›  seanyboy

PHP-自定义错误处理。重定向404被AVG反病毒软件劫持。如何停止?

  •  1
  • seanyboy  · 技术社区  · 16 年前

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

    虽然该页面在大多数浏览器上都能正确显示,但我发现AVG Anti-Virus正在劫持该页面并将其重定向到非现场404页面。

    我曾尝试在PHP中使用header命令强制生成一个标题(状态:200OK),但是如果我对页面执行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
    

    如果不重写软件以使用Mod_rewrite(我不太理解),我(在PHP中)如何在显示此页面时停止在标题中发送的“HTTP:/1/1 404 Not Found”行?

    谢谢

    3 回复  |  直到 11 年前
        1
  •  4
  •   Vinko Vrsalovic    16 年前

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

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

    这将重写所有不存在的内容(因此会给index.php一个404),URL路径位于缺少的内容查询字符串参数中

        2
  •  4
  •   kender    16 年前

    如果你得到的是一个 找不到页面 让它发送状态200 OK。请

    不管出于什么原因,这都是人们最讨厌的“把戏”之一。如果页面用户请求不存在,请告诉他以及他的浏览器。对于搜索引擎来说,这将抓取/缓存您的自定义错误页面,认为这是实际的响应。

        3
  •  0
  •   TRiG    13 年前

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

    推荐文章