http://域名/ROOT/b
这样不行么?

解决方案 »

  1.   

    试了一下,这样不行。百度了一下,因为ROOT是tomcat在配置文件中定义的根目录,所以当一个工程目录命名为ROOT的时候,它就在tomcat的虚拟目录映射中变成了根目录,而不再是一个虚拟子目录了。而localhost/ROOT,根据tomcat的“最长匹配原则”,tomcat先寻找localhost/ROOT这个目录是否是一个虚拟子目录,而这时是不存在名字为ROOT的虚拟子目录的,因此tomca再去父目录也就是“localhost”中寻找,而localhost是指向虚拟根目录的(即ROOT目录),因此tomcat进入ROOT目录中,然后寻找ROOT目录,而我们在ROOT目录中,没有定义ROOT子目录,这时候就报404错误了。
      

  2.   

    试了一下,这样不行。百度了一下,因为ROOT是tomcat在配置文件中定义的根目录,所以当一个工程目录命名为ROOT的时候,它就在tomcat的虚拟目录映射中变成了根目录,而不再是一个虚拟子目录了。而localhost/ROOT,根据tomcat的“最长匹配原则”,tomcat先寻找localhost/ROOT这个目录是否是一个虚拟子目录,而这时是不存在名字为ROOT的虚拟子目录的,因此tomca再去父目录也就是“localhost”中寻找,而localhost是指向虚拟根目录的(即ROOT目录),因此tomcat进入ROOT目录中,然后寻找ROOT目录,而我们在ROOT目录中,没有定义ROOT子目录,这时候就报404错误了。
    那b文件没有后缀么?比如b.jsp,b.html啥的,带个后缀区别下呗,干嘛非要和规则过不去呢
      

  3.   

    试了一下,这样不行。百度了一下,因为ROOT是tomcat在配置文件中定义的根目录,所以当一个工程目录命名为ROOT的时候,它就在tomcat的虚拟目录映射中变成了根目录,而不再是一个虚拟子目录了。而localhost/ROOT,根据tomcat的“最长匹配原则”,tomcat先寻找localhost/ROOT这个目录是否是一个虚拟子目录,而这时是不存在名字为ROOT的虚拟子目录的,因此tomca再去父目录也就是“localhost”中寻找,而localhost是指向虚拟根目录的(即ROOT目录),因此tomcat进入ROOT目录中,然后寻找ROOT目录,而我们在ROOT目录中,没有定义ROOT子目录,这时候就报404错误了。
    那b文件没有后缀么?比如b.jsp,b.html啥的,带个后缀区别下呗,干嘛非要和规则过不去呢我是故意让路径冲突的,就是想弄明白tomcat在这个问题上的工作机制
      

  4.   

    试了一下,这样不行。百度了一下,因为ROOT是tomcat在配置文件中定义的根目录,所以当一个工程目录命名为ROOT的时候,它就在tomcat的虚拟目录映射中变成了根目录,而不再是一个虚拟子目录了。而localhost/ROOT,根据tomcat的“最长匹配原则”,tomcat先寻找localhost/ROOT这个目录是否是一个虚拟子目录,而这时是不存在名字为ROOT的虚拟子目录的,因此tomca再去父目录也就是“localhost”中寻找,而localhost是指向虚拟根目录的(即ROOT目录),因此tomcat进入ROOT目录中,然后寻找ROOT目录,而我们在ROOT目录中,没有定义ROOT子目录,这时候就报404错误了。
    那b文件没有后缀么?比如b.jsp,b.html啥的,带个后缀区别下呗,干嘛非要和规则过不去呢
    不过现在已经差不多整明白了,百度到的那个“最长匹配原则”让我茅塞顿开。我再等等各位高手的讲解,差不多就结贴给分了~