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

如何让.htaccess仅在特定域名发起请求时生效?

针对特定域名执行.htaccess规则的实现方案

没问题,完全可以通过在.htaccess中添加域名匹配的Rewrite条件来实现你的需求。下面给你具体的代码示例和详细解释:

核心思路

利用RewriteCond匹配请求的域名(%{HTTP_HOST}变量),只有当域名符合目标条件时,才执行对应的Rewrite规则。

示例1:仅对example.com执行HTTPS强制跳转

如果你的需求是只有当请求来自example.com(含www子域名)时,才强制跳转到HTTPS,其他域名不做处理(或单独设置规则),可以用下面的代码:

# 开启Rewrite引擎
RewriteEngine On

# 匹配example.com或www.example.com(不区分大小写)
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
# 判断当前是否为HTTP请求
RewriteCond %{HTTPS} off
# 跳转到对应的HTTPS地址
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

示例2:给不同域名设置不同规则

如果想给其他域名也设置HTTPS跳转(比如和你的示例逻辑一样,所有域名都强制HTTPS,但规则分开控制),可以补充非目标域名的判断:

RewriteEngine On

# --- 针对example.com的规则 ---
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# --- 针对其他所有域名的规则 ---
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

关键参数解释

  • %{HTTP_HOST}:Apache提供的环境变量,用于获取当前请求的域名(比如用户访问的是test.com,这个变量的值就是test.com)
  • ^(www\.)?example\.com$:正则表达式,精确匹配example.com或www.example.com,\是转义点号(正则中点号代表任意字符),?表示前面的www.可选
  • [NC]:全称NoCase,表示匹配时不区分大小写,兼容Example.com、EXAMPLE.COM等访问场景
  • !:在RewriteCond中表示“非匹配”,比如!^(www\.)?example\.com$就是匹配所有不是example.com的域名
  • R=301:表示永久重定向(SEO友好),测试阶段可以用R=302临时重定向,确认没问题后再改成301
  • L:全称Last,表示执行完这条规则后,停止处理后续的Rewrite规则,避免冲突

注意事项

  1. 确保你的Apache服务器开启了mod_rewrite模块,大部分虚拟主机默认都已开启,如果没有可以联系主机商协助开启
  2. 测试时可以用浏览器开发者工具的「网络」面板,查看重定向状态码和目标地址是否符合预期
  3. 如果你有子域名或子文件夹的特殊规则,可以在域名匹配的条件下嵌套对应的规则,确保只对目标域名生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:15:20