4

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

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

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

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

但是,此链接也会生成 404 错误,但会显示不同的错误页面(通常包括广告): http: //www.canadiancommuter.com/2012062500-TTC+asks+Ministry+of+Labour+to+treat +CNE+like+Rolling+Stones+音乐会%2FCaribana.html

我知道这个 URL 不起作用的原因。我故意向它添加字符以使其返回 404 错误。我的问题是我无法弄清楚其他 404 错误页面来自何处。

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

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

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

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

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

我已经大量修改了用于该站点的所有代码,因此我非常有信心错误页面不是来自那里。

有谁知道我应该在哪里寻找这个错误页面?

(请注意,我不确定注册商或网络主机是否完全确定他们在说什么,所以我没有排除他们中的任何一个是此页面的来源。但是,彻底查看两者的管理控制台都没有显示任何相关信息。)

4

3 回答 3

4

您的页面正在通过运行cloudflare-nginx/的代理提供服务,该代理可能会捕获一些 404 错误,因为任何一种或一种形式的斜线都会%2F导致提供不同的 404 页面。

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

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

于 2012-08-05T08:32:37.710 回答
3

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

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

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

于 2012-08-05T07:26:12.027 回答
1

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

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

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

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

您也可以暂时禁用您的自定义错误页面,您可能会得到神秘的错误页面!

于 2012-08-09T00:54:14.687 回答