.htaccess从动态域/主机名中删除子域

时间:2014-05-20 19:04:57

标签: apache .htaccess mod-rewrite redirect

我有一些htaccess重定向到www.domain.com,除非它已经在www或www2子域名。

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^www2\.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1

但是这个当前位代码并没有剥离主机上已有的任何当前子域。

所以我正在寻找的是一些首先剥离子域然后添加www的htaccess。或类似的想法。

我的另一个要求是,域名是动态的,因为在许多站点上使用了相同的htaccess。这就是为什么在我目前的代码中我使用%{HTTP_HOST}变量。但也许还有另一个变量可以更好地适应这种情况吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试匹配www(2).domain.tld方案,使用HTTP_HOST的附加条件捕获主机的各个部分,并在规则替换部分中使用它,例如

RewriteCond %{HTTP_HOST} !^www2?\.[^\.]+\.[^\.]+$ [NC]
RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule (.*) http://www.%1/$1 [R=302,L]

这应该将所有非www(2).domain.tld个主机重定向到www.domain.tld

PS。请务必使用相应的response status code,具体取决于您尝试使用这些重定向实现的目标。