如何在JBoss中用Undertow实现非www URL重定向到www并解决重定向过多问题
JBoss Undertow 非www域名重定向到www配置方案
问题根源
你当前遇到的重定向次数过多问题,核心是配置的predicate判断逻辑错误:规则中value被写死为固定字符串https://localhost:8443,无论实际请求的域名是localhost还是www.localhost,该匹配条件每次都会触发,重定向后仍会反复命中规则形成死循环。
正确配置步骤
1. 先清理原有错误配置
先删除已添加的错误过滤器引用和规则:
/subsystem=undertow/server=default-server/host=default-host/filter-ref=nonwww-to-www:remove /subsystem=undertow/configuration=filter/rewrite=nonwww-to-www:remove
2. 新增正确的重写过滤器
新增非www转www的重定向规则,使用内置变量自动适配域名、端口和请求路径:
/subsystem=undertow/configuration=filter/rewrite=nonwww-to-www:add(redirect="true",target="https://www.%{HOST}%U",code=301)
参数说明:
code=301表示永久重定向,如需临时重定向可改为302%{HOST}自动读取当前请求的主机头,无需硬编码域名和端口%U自动携带当前请求的路径与查询参数,保证跳转后路径不变
3. 绑定过滤器到默认主机并添加正确判断规则
只有当请求域名不以www.开头时才触发重定向,避免死循环:
/subsystem=undertow/server=default-server/host=default-host/filter-ref=nonwww-to-www:add(predicate="not regex(pattern=^www\\., value=%{HOST}, full-match=false)")
4. 重载配置生效
执行重载命令让配置立即生效:
/:reload
配置完成后访问非www域名会自动跳转至www前缀域名,不会再出现重定向次数过多的问题。
内容的提问来源于stack exchange,提问作者Anil kumar
相关产品推荐
相关产品推荐

