如何通过htaccess配置实现旧域名URL不变显示新域名内容
实现方案说明
你需要的效果是反向代理,原有301重定向规则会强制跳转修改浏览器地址栏URL,完全不符合需求,需要替换为代理相关配置,具体操作如下:
你原有配置参考:
RewriteEngine On RewriteCond %{HTTP_HOST} ^abc\.test\.net$ Redirect 301 / https://test.xyz.com
第一步:修改.htaccess配置
删除原有301跳转规则,替换为以下配置:
RewriteEngine On # 匹配所有旧域名abc.test.net的请求 RewriteCond %{HTTP_HOST} ^abc\.test\.net$ # 反向代理转发到新域名,P标识启用代理,L标识匹配后不执行后续规则 RewriteRule ^(.*)$ https://test.xyz.com/$1 [P,L] # 替换新域名返回的重定向响应头,避免暴露新域名导致地址栏跳转 ProxyPassReverse / https://test.xyz.com/
第二步:前置依赖与注意事项
- 提前确认Apache服务器已启用
mod_rewrite、mod_proxy、mod_proxy_http三个扩展模块,配置生效前需要重启Apache服务。 - 如果新域名test.xyz.com是HTTPS站点,还需要启用
mod_ssl模块,确保服务器SSL证书校验配置正常,避免代理请求报错。 - 如果新站点页面内存在写死的绝对路径资源(比如直接引用
https://test.xyz.com/xxx.css),用户访问时会直接请求新域名资源,这种情况需要额外把新站点的资源路径改为相对路径,或者添加Substitute规则批量替换页面内的新域名引用。 - 完全删除原有301规则后,需要清理浏览器本地的301永久重定向缓存,否则之前访问过旧域名的用户还是会被跳转到新域名。
内容的提问来源于stack exchange,提问作者balaji
相关产品推荐
相关产品推荐

