You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grails配置serverURL后注册提交跳转404缺失上下文路径问题求助

解决方案

1. 补充上下文路径(Context Path)核心配置

你当前仅配置了grails.serverURL,缺少上下文路径关联配置,需在grails-app/conf/application.yml的production配置块下新增两项配置:

environments:
    production:
        grails:
            serverURL: http://myUrl:13001/myAppName
            web:
                contextPath: /myAppName # Grails层面上下文路径配置
        server:
            servlet:
                context-path: /myAppName # Spring Boot底层上下文路径配置

配置完成后,框架自动生成的所有跳转地址、资源链接都会统一携带/myAppName前缀,不会出现上下文丢失的问题。

2. 修正跳转逻辑避免硬编码路径

检查注册提交接口的后端跳转逻辑,禁止使用硬编码的绝对路径(如redirect(url: "/")),统一使用Grails原生路由跳转规则:

// 正确写法,框架自动拼接上下文路径
redirect controller: 'login', action: 'index'
// 带uri的适配写法
redirect uri: '/'

前端页面的表单、跳转链接也不要硬写路径前缀,使用Grails标签库生成地址:

<g:form controller="register" action="submit">
<!-- 禁止写 <form action="/register/submit"> 这类硬编码路径 -->

3. 适配安全框架配置(如使用Spring Security)

如果项目使用Spring Security做权限控制,需要补充安全框架的跳转适配配置,确保登录、注册成功后的跳转地址自动携带上下文前缀:

grails:
    plugin:
        springsecurity:
            successHandler:
                defaultTargetUrl: /
                alwaysUseDefaultTargetUrl: true
            logout:
                afterLogoutUrl: /login/index

4. War包部署适配

打War包部署到Tomcat时,需保证Tomcat的应用上下文和配置的/myAppName一致:

  • 不要将War包命名为ROOT.war,需命名为myAppName.war,Tomcat会自动以文件名作为上下文路径
  • 如需自定义上下文,可在Tomcat的conf/Catalina/localhost目录下新增myAppName.xml配置文件指定上下文路径

完成上述配置后重新启动/打包部署即可解决跳转404问题。


内容的提问来源于stack exchange,提问作者y seok Jeon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 16:03:01