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

如何在.htaccess的<If>语句中检测子字符串?

.htaccess 基于子字符串筛选实现HTTPS跳转配置方案

你当前的配置是完整匹配example.lan域名来区分本地和生产环境,要实现子字符串检测,可以利用Apache <If> 指令支持的strcontains()表达式函数,它能直接检测字符串是否包含指定子串。

修改后的配置示例(排除所有含.lan子串的域名)

如果要让所有包含.lan的本地域名(比如test.lan、example.lan)都不执行HTTPS跳转,其他域名强制跳转,配置如下:

<If "!strcontains(%{HTTP_HOST}, '.lan')">
    # PRODUCTION SERVER - 强制HTTPS跳转
    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</If>
<Else>
    # LOCAL DEVELOPMENT SERVER - 无跳转
</Else>

核心逻辑说明

  • strcontains(%{HTTP_HOST}, '.lan'):检测请求的域名是否包含.lan子串
  • 前面加!表示取反,即不包含.lan的域名才执行内部的HTTPS跳转规则

其他子字符串匹配场景

如果需要匹配包含特定子串的域名(比如只对含example.com的域名跳转),可以直接写:

<If "strcontains(%{HTTP_HOST}, 'example.com')">
    # 仅对包含example.com的域名强制HTTPS
    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</If>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:45:31