如何通过.htaccess将指定子域名页面重定向到主域名对应页面
.htaccess子域名指定路径重定向配置
原配置失效原因
%{REQUEST_URI}变量仅包含域名后的路径部分,不携带域名信息,因此你写的匹配规则永远不会命中。
正确配置
首先确保Apache已开启mod_rewrite模块,且站点配置中AllowOverride参数设置为All,之后在.htaccess中写入以下规则:
RewriteEngine On # 匹配spb、ekb两个指定子域名 RewriteCond %{HTTP_HOST} ^(spb|ekb)\.example\.com$ [NC] # 匹配/blog/、/projects/开头的请求路径 RewriteCond %{REQUEST_URI} ^/(blog|projects)/ [NC] # 重定向到主站对应路径,携带后续参数 RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
规则说明
- 如果你仅需要重定向根目录路径(仅
spb.example.com/blog/、ekb.example.com/projects/这类根路径生效,子路径不重定向),将第二个RewriteCond修改为:RewriteCond %{REQUEST_URI} ^/(blog|projects)/$ [NC] [NC]参数代表不区分大小写匹配- 测试阶段建议将
R=301改为R=302,避免浏览器缓存错误的永久重定向规则,验证生效后再改回301 - 配置修改后需要清空浏览器缓存再测试
内容的提问来源于stack exchange,提问作者Ruslan
相关产品推荐
相关产品推荐

