.htaccess:不包括子域的多个TLD到1个TLD

时间:2013-08-30 19:29:21

标签: .htaccess

我有多个TLD(domainX.com,domainY.net,...)指向同一个文件夹。在这个文件夹中,我想添加一个.htaccess文件,将不是domainY.com的所有www和非www URL重定向到domainY.com。

然而,这里有一个转折点。我有一些子域名:alfa.domainY.com和beta.domainY.com以及gamma.domainY.com设置,在我的所有测试中都会重定向到domainY.com。

任何人都有机会在这里给我一些成功的代码吗?

编辑:也许还添加一些#Comments,我注意到这里的大多数答案都缺乏,我认为这意味着其中一些不能被重用,因为人们不知道他们做了什么。我之后也可以自己添加。

1 个答案:

答案 0 :(得分:1)

尝试将这些规则添加到文档根目录的htaccess文件中:

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

对于任何 alpha.domainY.net ,与主机匹配的表达式将失败,因为它只与TLD(.net)和域(domainY)匹配。

第一行打开重写引擎。

第二行,即条件,是一个真/假表达式,应用于紧随其后的规则。在这种情况下,它会检查请求的Host:标头,如果 domainY.net结尾,则由于前面的!条件失败。 / p>

第三行是规则,URI用于匹配基本匹配所有内容的模式^(.*)$,并通过括号捕获。然后下一位是目标。如果规则匹配,由于模式匹配所有内容,它会执行,然后应用目标,在这种情况下,它会将浏览器重定向到domainY.net并通过正则表达式反向引用传递相同的URI {{1 }}