9000+ 不同的子域名 301 到主域名,.htacess apache

9000+ 不同的子域名 301 到主域名,.htacess apache

我购买了一个有多个子域名的域名,例如

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

数量达数千个,并且还包含指向这些页面的链接

我想对所有这些网址进行 301 重定向到 http://域名.com

知道如何做吗?

这是针对 Apache Web 服务器的,需要通过 .htaccess 完成

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

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

但是我有一个小问题,我想将所有子域名 + 子文件夹重定向到http://www。 domain.com/

除了 http://domain.com/subfolder/ 之外,在这种情况下我想重定向到 http://www.domain.com/subfolder/ [即没有子域名的例外]

我猜我需要添加一个例外,我该怎么做才能实现这一点。

注意:上面的示例 URL 中添加了空格,以防止垃圾邮件阻止帖子。

答案1

您是否打算删除“kim”部分并保留“whatever”部分,以便 kim.domain.com/whatever 重定向到 domain.com/whatever ?如果是这样,请将其放入每个站点的 .htaccess 文件中:

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

我假设您希望在 .htaccess 中这样做,因为您希望删除 kim、john、lizo 和 simon,但保留 larry、moe 和 curly。如果您这样做,那么我建议在一个目录中创建一个 htaccess 文件,并将该目录设置为您想要“删除”的所有虚拟主机的 DocumentRoot。

如果你想摆脱一切但是“domain.com”,你可以通过完全摆脱所有虚拟主机来提高性能,只保留一个站点,并在你的 Apache 配置中执行(参见“规范主机名“)

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

如果请求的主机不是“domain.com”且不为空(http 1.0 和不发送 Host: 标头的损坏客户端),则它会将用户重定向到 domain.com。这样服务器就不必确定客户端想要哪个虚拟主机,然后查找并读取 htaccess 文件。

如果你不想要“无论什么”部分,RewriteRule 就变成

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

答案2

就像是:

重写引擎开启

重写库 /

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

重写规则 ^(.*)$http://domain.com/[左,右=301]

基本上,这句话的意思是,如果 HTTP_HOST 与 domain.com 不匹配,则进行 301 重定向到http://域名.com。请小心转义.RewriteCond 中的任何内容。

如果您想要保留主机名后的文件夹,以便http://kim.domain.com/whatever重定向到http://domain.com/whatever,您可以将最后一行替换为:

重写规则 ^(.*)$http://domain.com/1 美元 [左,右=301]

相关内容