404错误页面的奇怪问题


Strange issue with 404 error pages

我建立了一个使用自定义404错误页面的网站。这似乎适用于大多数页面。

事实上,我有两个不同的错误页面,我想显示,现在第三个,我刚刚发现。

此页面不存在,显示在找不到页面时应显示的正确错误页面。这显示了在.htaccess文件中配置的错误页面:http://www.canadiancommuter.com/wontfindthis.php

如果有人试图访问数据库中已不存在的旧文章,则会根据我的PHP代码生成此错误页面:http://www.canadiancommuter.com/2334054466-some+旧+文章.html

然而,这个链接也会产生404错误,它显示了一个不同的错误页面(通常包括广告):http://www.canadiancommuter.com/2012062500-TTC+问+部+劳工+到+款待+CNE+点赞+滚石+音乐会%2FCaribana.html

我知道这个网址不起作用的原因。我故意在其中添加字符,使其返回404错误。我的问题是,我不知道其他404错误页面是从哪里来的。

它不在我的.htaccess文件中,我的.haccess文件中的错误页面可以在上面的第一个链接中看到。

它不在我的代码中。代码本身生成的唯一错误页面可以在上面的第二个链接中看到。

它唯一可以来自的其他地方是我的域名注册商和我的网络主机。

该域名是通过一家注册商注册的,但指向我在另一家提供商的托管帐户。注册商说,因为我只是把我的域名的DNS指向我们的网络主机,所以错误页面不会来自他们,而是来自我的网络主机。

我的网络主机说这个错误页面不是来自他们,但必须在我的代码中。

我已经对这个网站使用的所有代码进行了大量修改,所以我非常确信错误页面不是来自那里。

有人知道我应该在哪里查找这个错误页面吗?

(只是需要注意的是,我不确定注册商或网络主机是否完全确定他们在说什么,所以我不排除他们中的任何一个是本页面的来源。然而,仔细查看这两个的管理控制台并没有发现任何类似的信息。)。)

您的页面是通过运行cloudflare nginx的代理提供服务的,该代理可能会捕获一些404错误,因为/%2F形式的斜杠会导致提供不同的404页面。

您是否有一个.htaccess规则,可以捕获所有可能的404错误,而不仅仅是与文件名方案匹配的错误?如果没有,请尝试设置一个。您也可以尝试在本地服务器实例中运行该站点,看看404页面是否如预期那样运行。

编辑是因为我错误地将Transfer-encoding: chunked生成的字符视为由错误配置引起的

如果(正如您已经确定的)您的代码没有生成错误页面,那么"神秘"404页面要么来自默认的Web服务器配置(可能由您的托管提供商控制),要么间接地来自您的DNS服务(例如,如果您的Web服务器将您的浏览器重定向到未注册的域,那么您可能会被重定向到邀请您购买它的页面)。

IMO追踪这一点的最直接方法是使用配备了重定向跟踪机制的浏览器(例如安装了Firebug扩展的Firefox)。如果错误页面确实来自您的域(而不是拼写错误),那么这意味着默认的Web服务器配置(因此可能是您的托管提供商)。

编辑:重读以上内容,我意识到我应该澄清:你的DNS服务不能简单地将你"重定向"到某个地方。如果你发现在浏览器中键入一个不存在的域会将你重定向到一个有广告的页面,那么你可以相当确定是你的网络连接提供商在检查你的HTTP请求,在幕后代表你进行DNS检查,并重定向你。

这绝对来自您的主机提供商

当在url中给出%2F时,nginx无法将其作为错误处理(这可能是一个错误!),并且它显示了主机的默认错误页面,您可以在与您的网站位于同一服务器上的其他网站上看到相同的错误:

  • http://aias-uic.org/not-found.html
  • http://halfdrawn.com/not-found.html
  • http://flyingmantis.com/not%2Ffound.html

还有许多其他网站与您的网站位于同一服务器上!(你可以检查他们的IP以确定)

最后一个使用自定义错误页面,因此在%2F中会显示神秘的错误页面!

你也可以禁用你的自定义错误页面一段时间,你可能会得到神秘的错误页面!