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

HTTPS条件重定向问题:排除以/mob结尾的URL

解决HTTPS重定向排除/mob结尾URL的问题

我来帮你搞定这个HTTPS重定向的问题!你想要的效果是:只有当请求的URL不以/mob结尾时,才把HTTP请求跳转到HTTPS,但你当前写的规则没生效,咱们来一步步修正它。

先说说你原有规则的问题

你写的RewriteCond %{REQUEST_URI} !^/(.*)/mob$这个正则有两个小漏洞:

  • 它强制要求/mob前面必须有一个/和任意内容,这就漏掉了http://example.com/mob这种直接在根目录下的/mob请求
  • 正则的匹配逻辑过于严格,容易出现意外的不匹配情况

修正后的重定向规则

直接用下面的规则替换你原来的代码就可以了:

RewriteEngine On
# 仅对HTTP请求生效,且排除以/mob结尾的URL
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !/mob$
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,R=301]

规则详解

咱们拆解一下每个部分的作用:

  • RewriteEngine On:开启Apache的URL重写引擎,这是所有重定向规则的基础
  • RewriteCond %{HTTPS} !=on:判断当前请求是HTTP协议(非HTTPS),只有满足这个条件才会继续往下走
  • RewriteCond %{REQUEST_URI} !/mob$:这里的!表示“不匹配”,/mob$精准匹配所有以/mob结尾的请求URI,这类请求会被排除在重定向之外
  • RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [L,R=301]:把匹配到的所有请求路径,重定向到对应的HTTPS地址。[L]表示这是最后一条执行的规则,R=301表示这是永久重定向(如果需要临时重定向可以改成R=302)

验证你的示例场景

这个规则完美覆盖你提到的三种情况:

  • 访问http://example.com/(任意内容)/mob:第二个RewriteCond不满足,不会触发重定向
  • 访问http://example.com/(任意内容):两个条件都满足,会自动跳转到对应的HTTPS地址
  • 访问http://example.com:同样满足条件,重定向到https://example.com

额外注意事项

  • 确保你的Apache服务器已经开启了mod_rewrite模块,如果没开的话需要先启用它
  • 测试前记得清空浏览器缓存,避免旧的重定向缓存影响测试结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:40:32