如何用单个.htaccess文件将多域名URL 301重定向至新域名URL
Apache多域名301重定向解决方案(.htaccess实现)
你之前的代码失效是因为Redirect指令仅匹配URL路径,不会校验请求的域名——不管访问哪个旧域名的/url.html,都会被第一条规则拦截,导致所有请求都跳转到同一个目标地址。要实现分域名的精准重定向,得用mod_rewrite结合域名判断来完成。
正确的.htaccess配置代码
RewriteEngine On # 处理old-domain1.com的指定页面重定向 RewriteCond %{HTTP_HOST} ^old-domain1\.com$ [NC] RewriteRule ^url\.html$ https://newsite.com/url-from-domain1.html [R=301,L] # 处理old-domain2.com的指定页面重定向 RewriteCond %{HTTP_HOST} ^old-domain2\.com$ [NC] RewriteRule ^url\.html$ https://newsite.com/url-from-domain2.html [R=301,L] # 处理old-domain3.com的指定页面重定向 RewriteCond %{HTTP_HOST} ^old-domain3\.com$ [NC] RewriteRule ^url\.html$ https://newsite.com/url-from-domain3.html [R=301,L]
规则说明
RewriteCond %{HTTP_HOST} ^old-domain1\.com$ [NC]:校验当前请求的域名是否为old-domain1.com,[NC]表示不区分大小写(兼容Old-Domain1.com这类大小写变体)RewriteRule ^url\.html$ https://newsite.com/url-from-domain1.html [R=301,L]:当域名条件匹配时,针对/url.html路径执行301永久重定向,[L]表示匹配后不再执行后续规则,避免冲突
批量重定向扩展示例
如果旧域名下有大量页面需要对应重定向,可以按域名分组添加规则:
# old-domain1.com批量页面重定向 RewriteCond %{HTTP_HOST} ^old-domain1\.com$ [NC] RewriteRule ^page1\.html$ https://newsite.com/new-page1.html [R=301,L] RewriteRule ^article/(.+)$ https://newsite.com/new-article/$1 [R=301,L]
注意事项
- 确保服务器已启用
mod_rewrite模块 - 测试阶段建议先用
R=302(临时重定向),确认规则生效后再改为R=301,避免浏览器缓存错误的重定向规则 - 网站根目录的Apache配置需允许.htaccess生效(设置
AllowOverride All)
内容的提问来源于stack exchange,提问作者BigDayDee
相关产品推荐
相关产品推荐

