如何通过.htaccess将domain1全量链接重定向至domain2的HTTPS域名
实现跨域名HTTPS重定向(保留路径)的.htaccess配置方案
绝对可以!这正是Apache的mod_rewrite模块擅长处理的场景,你只需要在domain1服务器的根目录下创建/编辑.htaccess文件,添加以下规则就能完美实现需求:
# 开启mod_rewrite模块(必须) RewriteEngine On # 匹配domain1的所有HTTP/HTTPS请求,重定向到domain2的HTTPS并保留路径 RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC] RewriteRule ^(.*)$ https://domain2.com/$1 [L,R=301]
规则细节拆解:
RewriteEngine On:开启mod_rewrite功能,这是所有重定向规则生效的基础前提。RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]:精准匹配请求的主机头为domain1.com,[NC]标记表示忽略大小写(比如Domain1.com这类大小写变体也会被匹配)。RewriteRule ^(.*)$ https://domain2.com/$1 [L,R=301]:^(.*)$:捕获请求的完整路径部分(比如/customlink)。https://domain2.com/$1:把捕获到的路径拼接到domain2的HTTPS地址后,实现路径保留。[L]:表示这是最后一条规则,匹配成功后不再处理后续规则。[R=301]:发送301永久重定向,告诉浏览器和搜索引擎该重定向是永久的,有利于SEO优化;如果只是临时测试,可以换成R=302临时重定向。
额外补充说明:
- 确保你的Apache服务器已经启用
mod_rewrite模块,并且服务器配置允许.htaccess生效(需要在对应目录的Apache配置中设置AllowOverride All)。 - 如果需要保留原请求的查询字符串(比如
http://domain1.com/customlink?param=1要重定向到https://domain2.com/customlink?param=1),可以在RewriteRule的标记里加上QSA,即修改为[L,R=301,QSA]。 - 测试时可以打开浏览器开发者工具的「网络」面板,查看重定向的状态码和目标地址是否符合预期。
实际效果示例:
原请求:
http://domain1.com/customlink→ 重定向至https://domain2.com/customlink
原请求:https://domain1.com/customlink?foo=bar→ 重定向至https://domain2.com/customlink?foo=bar(添加QSA标记后)
内容的提问来源于stack exchange,提问作者BTB
相关产品推荐
相关产品推荐

