超过9000个不同的子域301到主域.htacess apache

我买了一个域有不同的子域名,如

Kim.domain.com/whatever
john.domain.com/whatever1
Lizo.domain.com/whatever2
Simon.domain.com/whatever1

这是在成千上万,也有链接到这些网页

我想做一个301redirect到http://domain.com所有这些url

任何想法如何做到这一点?

这是一个Apache Web服务器,需要通过.htaccess完成

我已经通过阅读下面的答案来实施解决scheme。

RewriteEngine On RewriteCond %{HTTP_HOST} !^www. domain.com$ RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*)$ http:/ / www. domain.com/$1 [L,R=301] 

不过,我有一个小问题,我想redirect所有子域名+子文件夹到http:// www 。 domain.com/

除http://域外。 com /子文件夹/,在这种情况下,我想redirect到http:// www.domain。 COM /子文件夹/ [即无子域的例外]

我猜我需要添加一个exception,我能做些什么来实现这一点。

请注意:上面的示例url中已经添加了空格,以防止垃圾邮件阻止post。

你打算失去“kim”部分,并保留“任何”部分,以便kim.domain.com/whateverredirect到domain.com/whatever? 如果是这样,那么将其放到每个站点的.htaccess文件中:

 RewriteEngine On RewriteRule ^/(.*)$ http://domain.com/$1 [L,R=301] 

我假设你想在.htaccess中这样做,因为你想摆脱kim,john,lizo和simon,但是保持larry,moe和curly。 如果你这样做,那么我build议在一个目录中创build一个htaccess文件,并将该目录设置为你想“摆脱”的所有虚拟主机的DocumentRoot。

如果你想摆脱除“domain.com”以外的任何东西 ,你可以通过完全摆脱所有的虚拟主机,只有一个站点,并在你的apacheconfiguration中(参见“ 规范主机名 ”)来提高性能。

 RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.com$ RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*)$ http://domain.com/$1 [L,R=301] 

如果所请求的主机不是“domain.com”,并且它不是空白的(http 1.0和不发送主机:标头的客户机),则会将用户redirect到domain.com。 这样可以节省服务器,从而不必知道客户端需要什么虚拟主机,然后查找并读取htaccess文件。

如果你不想要“无论”部分,重写规则变成

 RewriteRule . http://domain.com/ [L,R=301] 

就像是:

RewriteEngine On

RewriteBase /

RewriteCond%{HTTP_HOST}!^ domain.com $ [NC]

RewriteRule ^(。*)$ http://domain.com/ [L,R = 301]

基本上这是说,如果HTTP_HOST不匹配domain.com,做一个301redirect到http://domain.com 。 小心逃脱任何. 在RewriteCond中。

如果要保留主机名后面的文件夹,以便http://kim.domain.com/whateverredirect到http://domain.com/whatever ,可以将最后一行replace为:

RewriteRule ^(。*)$ http://domain.com/ $ 1 [L,R = 301]