重写通配符子域名和通配符域名

重写通配符子域名和通配符域名

对于托管大量域名的网络服务器,我们希望实现重定向,将任何域上的任何子域重定向到其 www. 等效域。

sub1.domain1.com -> www.domain1.com
sub2.domain5.com -> www.domain5.com
anothersub.moredomains.com -> www.moredomains.com
etc

我一直无法找到涵盖通配符子域和域的重写规则。

任何帮助是极大的赞赏!

答案1

如果域名始终有两个组成部分 (x.tld),那么就相当简单。如果您必须考虑 x.co.uk 之类的内容,那么您将需要更大的规则或​​实际的域名列表。

未经测试,但类似的东西可能会有效。

# enable mod_rewrite
RewriteEngine On
# if the host is prefixed with www, don't match.
RewriteCond %{HTTP_HOST} !^www\.    
# match the last two components of the hostname (see below for a bette regex)
RewriteCond %{HTTP_HOST} (.+?)\.(.+?)$
# rewrite to the hostname from the match above (%1 and %2) plus the current url ($1).
RewriteRule /(.*) http://www.%1.%2/$1 [L,R=301]

添加

LogLevel alert rewrite:trace

您可以在错误日志中搜索“rewrite:”来获取调试信息。

这些(.+?)条件可能更准确地说是“除了点之外的任何内容” ([^\.]+),但我不记得 Apache 使用的正则表达式引擎中的确切语法,因此上述版本更简单,可以让您正常工作。

相关内容