我有一个在 IIS 7 下的 Tomcat 7 中运行的 Grails 应用程序,使用 Jakarta Isapi Tomcat 连接器版本 1.2.30,我无法让错误处理按照我的意愿进行。Tomcat 连接器配置uriworkermap.properties
为将应用程序 URL 下的所有请求转发到 Tomcat:
/OrderSubmission/* = worker1
Grails 应用程序有自己的自定义错误页面,当应用程序在没有 IIS / Tomcat 连接器的开发机器上运行时可以正常工作,但是在服务器上,如果在 IIS 中打开自定义错误页面,这些总是会覆盖Grails 应用程序。这意味着我有一个特定的页面来处理某种异常类型,例如UrlMappings.groovy
:
"500"(controller: 'error', action: 'itemNotFound', exception: ItemNotFoundException)
...我看到的是我指向 IIS 的静态 500 错误页面。
如果我改为在 IIS 中打开详细错误,我会通过我的 Grails 应用程序获得正确的错误页面 - 但是,如果对应用程序上下文之外的 URL 发出请求,我会看到详细的 IIS 404 页面,这是不可接受的。如果我更改 Tomcat 连接器uriworkermap.properties
以包含从根目录向下的所有内容,那么我会看到默认的 Tomcat 404 错误页面。我尝试通过将error_page
选项设置isapi_redirect.properties
为指向我的 IIS 静态自定义页面,使 Tomcat 连接器默认为自定义页面,如下所示:
error_page=/%d.htm
...但这不起作用,我在任何地方都找不到使用此设置的任何示例。
我需要做的是显示自定义 Grails 错误页面 - 除非请求的 URL 在应用程序之外或应用程序已关闭,此时我需要显示自定义静态错误页面。
有没有人设法做到这一点?
TIA