将任何子域重定向到主域上的页面

时间:2012-01-04 16:32:54

标签: .htaccess redirect subdomain

真的很快。我希望能够将任何键入subdomain.mydomain.com的人重定向到我的主域上的页面。即如果我输入:answers.mydomain.com我会被重定向到mydomain.com/suberror

如果可能的话,我希望这是一个通用的规则,因为我认为添加语句以排除我不想重定向的任何子域更容易,而不是添加语句以包含其他所有子域。顺便说一句,我需要使用.htaccess文件。

请你告诉我这是否可能,如果是的话,怎么样......提前谢谢!

2 个答案:

答案 0 :(得分:21)

尝试将其添加到.htaccess文件中的适当位置:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^answers\.mydomain\.com$   [NC]
RewriteRule ^ http://mydomain.com/suberror  [L,R]

只要请求的主机为answers.mydomain.com,就会应用该规则。将正则表达式匹配设置为^时,任何 URI都将匹配,目标将重定向到http://mydomain.com/suberror

如果您只希望将特定的URI请求重定向到/ suberror,则可以将^调整为适当的值。

编辑:

对于所有子域名(包括www.mydomain.com):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.mydomain\.com$   [NC]
RewriteRule ^ http://mydomain.com/suberror  [L,R]

要排除www.mydomain.com,请在RewriteRule之前添加此行:

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$  [NC]

答案 1 :(得分:0)

如果我们使用基于Linux的主机甚至共享主机,在cPanel中,在创建子域时,我们可以创建一个通配符子域,我们可以指定系统目录的路径。

enter image description here

以上配置在.htaccess文件中生成以下代码

RewriteEngine On
RewriteCond %{HTTP_HOST} ^salebybrands\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.salebybrands\.com$
RewriteRule ^Folder_To_Redirect_Requests\/?(.*)$ "http\:\/\/salebybrands\.com\/$1" [R=301,L]

现在,每个子域请求(例如,abc.salebybrands.com)都将重定向到 salebybrands.com/Folder_To_Redirect_Requests

注意:通配符子域只会重定向未知的子域。如果您创建了其他子域,它们将按原样工作,并且它们到重定向的映射不会被覆盖。