如何仅重定向特定域名的子域名站点至主域名?技术求助
嘿,这个问题我熟!你之前的规则之所以会把所有域名都重定向,核心问题出在RewriteCond %{HTTP_HOST} ^(.*)$——这个条件会匹配任何请求的主机名,不管是你的example.com子域名,还是新创建的其他域名,都会被一网打尽。
要解决这个问题,我们只需要把RewriteCond的匹配范围缩小到仅针对example.com的子域名即可,同时确保规则只作用在example.com的虚拟主机配置里,不会影响其他站点。
给你调整后的规则:
RewriteEngine On RewriteBase / # 只匹配所有以.example.com结尾的子域名(比如something.example.com、anothertext.example.com) RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [NC] # 301永久重定向到主站example.com RewriteRule ^(.*)$ https://example.com [R=301,L]
关键说明:
^(.+)\.example\.com$这个正则表达式的意思是:匹配开头有至少一个字符,且以.example.com结尾的主机名。这样就精准命中了所有子域名,而主域名example.com本身不会被匹配(因为前面没有额外字符)。- 如果连
www.example.com也想重定向到example.com,这个规则同样适用,因为www.example.com符合子域名的匹配条件。 - 重要提醒:一定要把这段规则放在example.com对应的
<VirtualHost>配置块内部,而不是服务器的全局配置(比如httpd.conf的全局区域)。这样新创建的其他虚拟主机就不会继承这个重定向规则,能正常访问。
你可以测试一下:访问任意子域名比如blablabla.example.com,应该会自动跳转到example.com;而新域名比如newdomain.com则能正常打开,不会被重定向。
内容的提问来源于stack exchange,提问作者Luca Pecchiura
相关产品推荐
相关产品推荐

