Jetty强制HTTPS与单页面 301 跳转_阿里云 Java 虚拟主机可用方案
Java 主机启用 HTTPS 并把 HTTP 流量 301 到 HTTPS,是站点上线前必须走完的一步。Jetty 容器加载 PEM 格式证书 后,80 端口的请求要统一跳到 443,避免同一页面出现 HTTP 与 HTTPS 两个版本分散权重。
免费证书有效期 90 天,付费证书 1 到 2 年。PEM 格式证书 部署到 Jetty 前用 腾讯云证书工具 转换格式,记录好到期时间,提前 15 天续签,避免证书过期导致站点被浏览器拦截。
配置参考(keytool 导入 PFX 到 JKS): ``` keytool -importkeystore -srckeystore 域名.pfx -srcstoretype PKCS12 -destkeystore 域名.jks -deststoretype JKS ```
server.xml 里新增一个 Connector,port 设为 443,protocol 用 org.apache.coyote.http11.Http11NioProtocol,SSLEnabled 设为 true,keystoreFile 指向 JKS 路径,keystorePass 填密钥库密码,keyAlias 填证书别名。原 80 端口的 Connector 加上 redirectPort="443",所有 HTTP 请求自动跳到 HTTPS。
web.xml 加 security-constraint,web-resource-collection 里 url-pattern 填 /*,auth-constraint 留空,user-data-constraint 里 transport-guarantee 填 CONFIDENTIAL。容器检测到请求走 HTTP,会自动返回 302 或 301 跳到 HTTPS。要严格 301,配合 redirectPort 或在反代层做 Rewrite。
常见坑:Connector 配置错误。排查顺序是先看容器日志,再看证书链,再看端口与安全组。443 端口在云服务器安全组、系统防火墙、容器监听三处都要放行,少一处都连不上。证书密码含特殊字符要在 server.xml 里用 & 转义。
整站 301 期间保持服务器稳定,返回码统一 301,不要出现 302、303、js 跳转、meta refresh 混用。百度对 301 的权重传递最完整,其他跳转方式会损失权重或被判定为作弊。跳转链不要超过 1 层,多层 301 会延迟收录迁移。

更新时间:2026-08-27 00:42:36