子域名重定向至目录但URL保持不变的配置问题
解决client.site.com.br反向代理到www.site.com.br/system/的问题
你的配置没生效主要是几个细节没调整对,我帮你修正并把关键要点说清楚:
问题根源
- 域名匹配规则不匹配:原来的规则只针对
.com结尾的域名,现在需要适配.com.br的二级域名 - 语法错误:
RewriteCond% {HTTP_HOST}里%和{之间缺少空格,Apache无法识别这个条件 - 目标域名错误:原来指向的是
www.site.com,现在要改成对应.com.br的域名
修正后的完整.htaccess配置
RewriteEngine on # 匹配不带www和带www的client.site.com.br域名 RewriteCond %{HTTP_HOST} ^client.site.com.br$ [OR] RewriteCond %{HTTP_HOST} ^www.client.site.com.br$ # 反向代理到目标地址,保留URL路径并传递customer参数 RewriteRule ^(.*)$ https://www.site.com.br/system/$1?customer=customer [P,L]
关键配置说明
RewriteCond %{HTTP_HOST} ...:准确匹配你需要代理的域名,[OR]表示两个条件满足任意一个即可RewriteRule里的[P]:告诉Apache使用反向代理模式,把请求转发到目标URL,同时保持浏览器地址栏不变[L]:表示这是最后一条重写规则,避免后续规则(如果有的话)干扰当前代理逻辑- 加上
https://前缀:确保目标站点是HTTPS时能正常转发,如果目标是HTTP可以去掉,但HTTPS更安全
额外注意事项
- 确保你的Apache服务器已经启用了
mod_rewrite、mod_proxy、mod_proxy_http(如果是HTTPS还要mod_proxy_https)模块,这些是反向代理必需的 - 测试前清空浏览器缓存,避免旧的缓存导致测试结果不准确
- 如果代理后出现500错误,检查Apache的错误日志,通常是模块未启用或者权限问题
内容的提问来源于stack exchange,提问作者user4875289
相关产品推荐
相关产品推荐

