关于为什么同一网站下返回的404页面不一样

今天在上班的时候偶然发现访问同一个网站,不同目录时返回的404页面不同。具体效果如下:
情况1:
关于为什么同一网站下返回的404页面不一样
情况2:
关于为什么同一网站下返回的404页面不一样
因为是公司签了保密协议的东西,漏洞还未修复,所以我把IP盖住了,不过这俩确实是同意网站不同路径。


在解释这个问题之前我们先来了解一下用户正常请求一个页面的流程:
关于为什么同一网站下返回的404页面不一样
这里Web浏览器发送的请求就是我们在浏览器地址栏里输入的URL
中间件就是指web服务器(本次测试的web服务器所使用的中间件是Tomcat)
我们所看到的404页面就是由服务器返回的应答页面。

现在我们来解释一下这个问题的成因。
情况1:
此页面是由该网站服务器上已存在的项目ucenter所返回的404页面。   
也就是说该404页面是由中间件上的应用程序所定义的404页面。
应用程序指的是部署在中间件上的程序。
返回结果时,应用程序的优先级高于中间件。

情况2:
此页面是用户请求了中间件上一个不存在的项目xiu。
然后由中间件返回了一个404页面

然后我们再深入解释下:
我们访问一个网站时,是需要输入用户名和密码才能将其打开的。
默认都是匿名访问的 
我们之所以能打开是匿名访问的,因为中间件设置不需要账号密码登录
打开网站之后  里边有登录注册功能
这是程序设计的 
跟中间件没关系 

举个例子
一个网站就像但与一座大厦。
中间件是这座大厦的大门。
我们发送的访问请求是这座大厦的访客。
URL中的目录相当于这个大厦内的部门。
URL中的文件相当于部门内的人员。
情况1的404页面相当于部门告诉访客您要要找的人不存在。
情况2的404页面相当于有大厦大门的保安告诉访客他要找的部门和人都不存在。

一般情况下访客进入大门是需要进行身份验证的,也就是我们之前提到的的输入正确的账号和密码。
但是现在中间件,也就是这里的大门默认是不需要对访客进行身份验证的,所以访客可以在不输入账号和密码的情况下,通过大门进行匿名访问。
访客进门之后按照URL中的目录来寻找对应的部门。
如果这个URL中的路径存在,也就是部门存在,但是部门中人不存在,那么就会出现情况1,由部门告知访客
您要找的人不存在。
如果这个部门都不存在,那么就会由保安告诉访客,您要找的部门和人都不存在。