如何通过.htaccess实现域名跳转并隐藏目标域名?
解决.htaccess实现URL代理隐藏目标域名的问题
你的需求是实现反向代理:用户访问www.mysite.net/abc时,服务器偷偷拉取www.example.com的内容返回给用户,同时地址栏保持原URL不变。你之前的规则存在两个核心问题:
原规则的错误点
- 正则表达式错误:
^www\mywebsite\.net$里的域名拼写错误(应为www\.mysite\.net),且域名的点号前缺少转义符 - 同时使用
[P](代理标记)和[R=301](跳转标记),二者冲突——R=301会强制浏览器跳转,直接导致地址栏变化,完全违背需求
正确的.htaccess配置
首先确保你的Apache服务器已开启mod_rewrite、mod_proxy和mod_proxy_http模块(部分主机默认未开启,需在服务器配置中启用),然后替换为以下规则:
RewriteEngine On # 匹配目标域名 RewriteCond %{HTTP_HOST} ^www\.mysite\.net$ [NC] # 限定只代理/abc路径(可根据需求删除此条,代理整个域名) RewriteCond %{REQUEST_URI} ^/abc/?$ [NC] # 反向代理到目标站点,仅保留代理相关标记 RewriteRule ^(.*)$ https://www.example.com [P,NE,L]
配置说明
[P]:开启反向代理模式,服务器会代替用户请求目标站点内容,再返回给浏览器,地址栏不会变化[NE]:防止URL中的特殊字符被转义,保证请求正常传递[L]:停止处理后续Rewrite规则,避免冲突
额外注意事项
- 如果目标站点有防盗链或IP限制,可能需要添加
ProxyAddHeaders Off配置,或自定义请求头,避免被目标站点拒绝访问 - 部分虚拟主机服务商可能禁用了反向代理功能,若配置后仍无效,需联系主机商确认权限
内容的提问来源于stack exchange,提问作者drortho
相关产品推荐
相关产品推荐

