OpenShift技术问题:如何将带路径URL重定向至根URL
解决OpenShift上JavaEE站点根域名访问问题
我来帮你搞定这个问题,让你的JavaEE站点能直接通过根域名http://siteperso-valentin.1d35.starter-us-east-1.openshiftapps.com/访问,不用再加sitePerso路径。咱们从Route配置、应用上下文两个核心点入手:
1. 检查并修正OpenShift Route配置
首先确保你的Route没有设置多余的路径转发。你的Route YAML应该去掉spec.path字段(或者把它设为/),这样所有根域名的请求都会直接转发到后端Service。示例正确配置如下:
apiVersion: route.openshift.io/v1 kind: Route metadata: name: siteperso-route # 替换成你的Route名称 spec: host: siteperso-valentin.1d35.starter-us-east-1.openshiftapps.com to: kind: Service name: siteperso-service # 替换成你的Service名称 port: targetPort: 8080 # 替换成你的Service关联的容器端口
执行命令更新Route:
oc apply -f your-route-file.yaml
2. 调整JavaEE应用的上下文路径
这是关键!你的当前应用部署在sitePerso上下文下,需要改成根上下文/,具体操作分两种情况:
情况A:WAR包部署
把你的WAR文件名改成ROOT.war,这样应用服务器(比如WildFly、Tomcat)会自动将它识别为根上下文应用,访问/就会直接指向这个应用。
如果用Maven打包,在pom.xml里修改<finalName>:
<build> <finalName>ROOT</finalName> <!-- 其他配置 --> </build>
情况B:使用应用服务器配置文件(以WildFly为例)
在你的应用中添加或修改src/main/webapp/WEB-INF/jboss-web.xml,设置根上下文:
<?xml version="1.0" encoding="UTF-8"?> <jboss-web> <context-root>/</context-root> </jboss-web>
3. 验证Service与Deployment的关联
确保你的Service正确指向应用容器的端口:
- 检查Service的
targetPort是否和容器内应用监听的端口一致(通常是8080) - 用
oc describe service <your-service-name>确认端口映射正确
4. 测试与排查
- 部署修改后的应用后,用
oc get route查看Route状态,确认HOST/PORT显示为你的根域名 - 进入容器测试应用是否能在内部访问根路径:
如果返回应用内容,说明容器内配置正确;如果还是返回404,那就是应用上下文的问题还没解决oc exec -it <your-pod-name> -- curl http://localhost:8080/ - 若Route转发有问题,用
oc describe route <your-route-name>查看事件日志,排查转发错误
内容的提问来源于stack exchange,提问作者Valentin Montmirail
相关产品推荐
相关产品推荐

