我有一些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}变量。但也许还有另一个变量可以更好地适应这种情况吗?
答案 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,具体取决于您尝试使用这些重定向实现的目标。