热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用mod_jk和Apachehttpd时,使用Tomcat404页面的自定义错误页面

如何解决《使用mod_jk和Apachehttpd时,使用Tomcat404页面的自定义错误页面》经验,为你挑选了1个好方法。

我们设置如下:

httpd <-> mod_jk (Tomcat)

httpd配置为将所有请求转发到URL/app*到mod_jk.httpd配置了HTTP错误404,500等的自定义错误页面.

如果用户输入URL, http://hostname/non-existing-page则显示httpd的自定义404错误页面.

如果用户输入URL,http://hostname/app-blabblah则显示Tomcat的404错误页面.在/ app托管的应用程序可以处理404错误,如果它类似于/ app/non-existentpage.但是context/app-blablah没有解析为Tomcat上的任何war文件,因此会导致Tomcat的404错误页面.

我们使用的是Tomcat的精简版,它的webapps文件夹只有app.war.

我被要求不显示Tomcat 404错误页面,因为它揭示了应用程序托管在Tomcat上并显示Tomcat版本的事实.

如果有人能告诉我如何:

    当Tomcat必须处理表示不存在的上下文的URL时,为Tomcat添加自定义404错误页面.

    或者配置httpd,如果它看到Tomcat返回404错误,它会呈现自己的自定义404错误页面.

PS:我不能自由地将/ app/*指向mod_jk,因为我们有时会部署其他以app开头的战争用于调试目的 - 例如app-debug.war.

更新:我正在更改mod_jk workers.properties以仅将/ app/*转发到Tomcat.



1> fab..:

回答你的问题:

    当Tomcat必须处理表示不存在的上下文的URL时,为Tomcat添加自定义404错误页面.

并尊重你的初始约束:

我不能自由地将/ app/*指向mod_jk,因为我们有时会部署其他以app开头的战争用于调试目的 - 例如app-debug.war.

最简单的解决方案是使用ROOT webapp文件夹.但是,为了使您的webapps文件夹保持最低限度,尊重您的其他条件,您不必在ROOT webapp文件夹中保留任何内容,而是保留自定义错误页面.

使用此配置,您只需添加$ CATALINA_BASE/conf/web.xml


  404
  /general-error.html

或者任何最适合你想要的东西.(在这里,您可以使用与app.war相同的错误自定义页面,最终用户将看不到差异).


结果是:

情况1: http://hostname/non-existing-page

将显示httpd错误自定义页面

情况2: http://hostname/app/non-existing-page

将显示应用程序app.war的错误自定义页面.($ CATALINA_BASE/conf/web.xml然后使用$ CATALINA_BASE/webapps/app/WEB-INF/web.xml)

情况3: http://hostname/app-dummy-url

将显示ROOT文件夹的Tomcat错误自定义页面.(仅使用$ CATALINA_BASE/conf/web.xml).


在编辑中,您删除了约束,现在能够:

chang(e)mod_jk workers.properties只将/ app/*转发给Tomcat.

那么在这种配置中,您将获得与您想要的替代方案相同的结果:

    或者配置httpd,如果它看到Tomcat返回404错误,它会呈现自己的自定义404错误页面.

但是如果你仍然想使用你在问题中提到的调试war文件(app-debug.war),你将需要每次都修改你的httpd配置(worker.properties以及你的VirtualHosts)和/或调试这些文件中的配置.由于它似乎不适合生产环境,因此在Tomcat中仅使用包含自定义页面的文件夹ROOT似乎是IMO的最佳解决方案.


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
author-avatar
追梦and寻梦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有