我们通过WSO2 Application Server(AS)包使用WSO2 Carbon 4.2.0 . 在更换旧的,高度定制的碳装置(由不再支持该产品的公司提供,已经放弃并拒绝使用它,并且没有详细说明他们如何/在Carbon中修改了什么)时,我们已经部署了将Web应用程序放在webapps容器中,因为它们之前已部署在旧实例中 . 我们已将carbon.xml中的WebContextRoot从默认的"/"更改为ex:"/stuff"的子URL,这也在自行回答的SO问题here中有详细说明 . 然而,那里给出的答案没有详细说明OP在修改他的WSO2实例时实际遇到的内容 .

在测试上述配置时,我们注意到如果用户要转到服务器上不存在的Web地址,则根据URL的格式,它们是:

  • 重定向到空白页面;

  • 收到"500 Internal server error"(我怀疑这是嵌入式Tomcat?);

  • 被发送到Carbon登录页面(出于安全原因,我们绝对不希望发生这种情况);要么

  • 获取XML文档说明:

<faultString> The service cannot be found for the endpoint reference (EPR) /stuff/services/nonexistantservicename </faultString>

至少在缺少内容的情况下,我们希望用户被发送到标准化的404错误页面,或者至少由服务器发送HTTP 404错误 . 对于服务,XML错误是可口的,我们可以处理它 .

我们现在唯一能够绕过这个问题的选择是在WSO2实例前面放置一个代理,这个实例将是管理和调整的另一层,并可能降低性能 . 请注意,我不是程序员,只是具有DevOps经验的管理员 . 我不知道如何用例如Java解决方案或重新编码WSO2的部分 . 定制核心产品也会妨碍WSO2的未来升级,我们正试图从现在开始挖掘自己,如上所述 . 是否没有内部WSO2机制来处理不存在的内容?我们不能将任何错误重定向到标准的固定响应页面吗?