如何配置Apache .htaccess实现域名掩码而非重定向
域名掩码(反向代理).htaccess 配置调整方案
核心问题原因
你当前的配置触发了Apache默认的外部3xx重定向,原因有两个:
- 规则中填写了完整的带域名的目标路径,Apache默认会返回跳转响应,浏览器地址栏会变为目标地址,无法实现掩码效果
- 第二条
RewriteCond "%{HTTP_HOST}" "^$"规则逻辑矛盾,同时要求Host为子域名和空值,实际不会生效,属于冗余错误配置
前置依赖
要实现域名掩码,本质是做反向代理,需要先确认你的Apache服务器已经启用以下模块:
mod_proxymod_proxy_http- 可选启用
mod_proxy_html,用于修正代理返回内容中的绝对链接
调整后的.htaccess配置
Options +FollowSymlinks RewriteEngine On RewriteBase / # 匹配所有指向子域名的请求 RewriteCond "%{HTTP_HOST}" ^cleveractions\.clevercarbon\.io$ [NC] # P标志启用反向代理,实现地址栏不变的域名掩码效果,L表示匹配后终止后续规则 RewriteRule ^(.*)$ https://clevercarbon.io/cleveractions/$1 [P,L] # 可选配置:修正主域名返回的重定向头,避免跳转漏出主域名 ProxyPassReverse / https://clevercarbon.io/cleveractions/ # 可选配置:替换返回内容中的绝对链接,避免资源跳转或加载错误 ProxyHTMLURLMap https://clevercarbon.io/cleveractions/ /
额外优化建议
如果你的子域名和主域名部署在同一台服务器,无需使用反向代理实现掩码,可以直接把子域名的站点根目录配置为主域名站点下的cleveractions目录,性能更高,也不会出现跨域、资源路径错误等代理相关问题。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

