404错误页面的奇怪问题

时间:2012-08-05 07:10:52

标签: php .htaccess http-status-code-404

我设置了一个使用自定义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+concert%2FCaribana.html

我知道为什么这个网址不起作用的原因。我故意在其中添加字符以使其返回404错误。我的问题是,我无法弄清楚其他404错误页面来自哪里。

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

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

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

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

我的网络托管服务商说这个错误页面不是来自他们,但必须在我的代码中。

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

有没有人有任何想法我应该寻找这个错误页面?

(请注意,我不确定注册商或网络主机是否完全确定他们在谈论什么,所以我并未排除其中任何一个作为此页面的来源。但是,彻底查看管理控制台,两者都不会泄露这种效果。)

3 个答案:

答案 0 :(得分:4)

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

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

已编辑,因为我错误地将Transfer-encoding: chunked生成的字符误认为是错误配置

答案 1 :(得分:3)

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

IMO追踪此问题的最简单方法是使用配备了跟踪重定向的机器的浏览器(例如安装了Firebug扩展程序的Firefox)。如果错误页面确实来自您的域(而不是拼写错误),则表明默认的Web服务器配置(可能是您的托管服务提供商)。

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

答案 2 :(得分:1)

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

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

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

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

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