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

如何通过.htaccess仅对指定域名执行301永久重定向?

指定域名下特定路径的301重定向方案

这个场景太常见了!直接用Redirect指令确实会对所有绑定到服务器的域名生效,要实现仅指定域名下的特定路径做301重定向,得给规则加上域名判断才行。我给你分两种主流服务器的解决方案:

Apache服务器方案

方法1:用指令(Apache 2.4+推荐)

如果你用的是Apache 2.4及以上版本,指令可以直接帮你做域名匹配,写法简洁直观:

<If "%{HTTP_HOST} in {'domain1.com', 'domain2.com'}">
    Redirect 301 /some/old/uri http://www.example.com/new/uri
</If>

原理很简单:只有当请求的域名是domain1.com或domain2.com时,里面的Redirect指令才会生效,其他域名的同路径请求完全不受影响。

方法2:用mod_rewrite(兼容老版本Apache)

如果你的Apache版本比较老,或者已经在使用mod_rewrite模块,用RewriteCond来匹配域名是更稳妥的选择:

RewriteEngine On
# 匹配指定的两个域名,[NC]表示不区分大小写
RewriteCond %{HTTP_HOST} ^(domain1|domain2)\.com$ [NC]
# 匹配目标路径,执行301重定向,[L]表示这是最后一条规则
RewriteRule ^some/old/uri$ http://www.example.com/new/uri [R=301,L]

要是有多个路径需要定向,只需要保留RewriteCond,新增对应的RewriteRule就行。

Nginx服务器方案

如果你的站点跑在Nginx上,配置起来更直接,通过server_name指定生效域名,再在location里设置重定向:

server {
    listen 80;
    # 指定要生效的域名
    server_name domain1.com domain2.com;

    # 精准匹配目标路径,返回301重定向
    location = /some/old/uri {
        return 301 http://www.example.com/new/uri;
    }

    # 这里可以放这两个域名的其他业务配置
}

其他域名的请求会走对应的server块,不会触发这个重定向规则。

小提示

测试的时候建议先用302临时重定向,等确认规则没问题了再改成301——毕竟301是永久重定向,会被浏览器缓存,要是配置错了清理缓存挺麻烦的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:17:37