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

Apache HTTP转HTTPS重定向异常:带/redirect后缀URL求助

解决Apache重定向Jenkins带/redirect后缀URL的404问题

嘿,我看出来你的问题核心在哪了——mod_alias的Redirect指令优先级比mod_rewrite的RewriteRule高,所以当请求进来时,Apache直接先执行了Redirect permanent / https://jenkins.example.net/,把所有HTTP请求原样重定向到HTTPS的对应路径,你写的那条去除/redirect后缀的规则完全没机会跑起来。这就导致带/redirect的URL被原封不动转到HTTPS,而Jenkins后端根本没有这个路径,自然返回404了。

另外提一句,你curl输出里的SEC_ERROR_UNKNOWN_ISSUER是客户端证书信任问题,和重定向无关;要是浏览器访问也报这个错误,得确保客户端信任你的证书链,不过咱们先解决核心的重定向问题。

修复方案:用mod_rewrite统一处理路径修改和HTTPS跳转

把HTTP VirtualHost里的Redirect指令删掉,改用mod_rewrite按顺序完成两个操作:先去掉/redirect后缀,再跳转到HTTPS。这样能保证路径修改先执行,再用修改后的路径做重定向。

修改后的完整配置

<VirtualHost *:80>
ServerName jenkins.example.net
RewriteEngine On

# 第一步:匹配所有以/redirect结尾的URL,去掉后缀;L标记表示匹配后停止后续规则
RewriteRule ^(.*)/redirect$ $1 [L,NC]

# 第二步:把所有HTTP请求永久重定向到HTTPS
RewriteRule ^(.*)$ https://jenkins.example.net$1 [L,R=301]
</VirtualHost>

<VirtualHost *:443>
proxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
ProxyPass / http://127.0.0.1:8080/ nocanon
ProxyPassReverse / http://127.0.0.1:8080/
ServerName jenkins.example.net
ErrorLog /etc/ssl/error_log
SSLEngine on
SSLCertificateFile /etc/ssl/certs/fopjenkins.pem
SSLCertificateKeyFile /etc/ssl/certs/fopjenkins.key
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
</VirtualHost>

关键规则说明

  • RewriteRule ^(.*)/redirect$ $1 [L,NC]:这条规则会先拦截所有带/redirect后缀的请求,把路径改成去掉后缀的版本;NC保证匹配不区分大小写,L告诉Apache“匹配到这条就别往下走了,先处理完这个路径修改”。
  • RewriteRule ^(.*)$ https://jenkins.example.net$1 [L,R=301]:等路径修改完成(或者没匹配到上一条规则的普通请求),再把所有HTTP请求转到HTTPS;R=301和你原来的Redirect permanent是完全一致的永久重定向效果。

验证方式

用curl测试的时候加上-k跳过证书验证,看看跳转流程是否符合预期:

curl -vLk http://jenkins.example.net/job/STUFOP/job/deploy_os/job/master/5/display/redirect

这次应该会看到请求先去掉/redirect后缀,再跳转到HTTPS的正确路径,最终Jenkins能返回对应的页面,不会再出现404了。

内容的提问来源于stack exchange,提问作者harshavmb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:51:53