将任何子域重定向到主域上的页面
Posted
技术标签:
【中文标题】将任何子域重定向到主域上的页面【英文标题】:Redirect any sub domain to a page on main domain 【发布时间】:2012-02-02 13:22:08 【问题描述】:真的很快。我希望能够重定向任何键入subdomain.mydomain.com
的人以重定向到我的主域上的页面。例如,如果我输入:answers.mydomain.com
,我将被重定向到 mydomain.com/suberror
。
如果可能的话,我希望这是一个通用规则,因为我认为添加语句来排除我不想被重定向的任何子域比添加语句来包含所有其他子域更容易。顺便说一句,我将需要使用 .htaccess
文件。
【问题讨论】:
【参考方案1】:尝试将其添加到 .htaccess 文件中的适当位置:
RewriteEngine On
RewriteCond %HTTP_HOST ^answers\.mydomain\.com$ [NC]
RewriteRule ^ http://mydomain.com/suberror [L,R]
只要请求的主机是answers.mydomain.com
,就会应用该规则。将正则表达式匹配设置为 ^
,any 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]
【讨论】:
感谢您的回答,但这是否仅在用户尝试转到answers.mydomain.com
时才有效?如果是这样,我认为您误解了我的问题。我想对任何子域执行此操作,有点像通配符。即如果RewriteCond
支持通配符,它可能看起来像*.mydomain.com
再次感谢乔恩——正是我想要的!虽然它没有达到我预期的全部效果,但这是不可避免的,我认为任何数量的.htaccess
都不会解决当前的情况。哦,好吧-您仍然是对的,而且大多数情况下都有效!例如:我试图狡猾地重定向 cPanel 在将插件域创建到页面时自动创建的子域,因此对于普通用户来说似乎没有子域!
如果是这种情况,请将括号中的R
替换为P
。
不幸的是仍然没有成功。 (我正在 IE 9 上使用 inPrivate 模式进行测试 - 每次更改都会有一个新会话)。我想我需要在.htaccess
文件中放置一些代码在没有被重定向的子域的根目录中,如果用户没有访问插件域,则重定向,即试图通过子域访问网站.?如果是这样,是否有可能做到这一点以及如何做到这一点?另外,是否可以在不更改 URL 的情况下重定向到页面?
这对我来说效果很好。通过将子域添加到 /etc/apache/default-ssl.conf 文件的顶部,我让我的子域在 GCP 中工作。我的 DNS 条目使用相同的 IP,因此当使用指定的 url 时,重定向会捕获它并将您发送到子域。【参考方案2】:
如果我们使用基于Linux的主机甚至共享主机,在cPanel中,在创建子域的同时,我们可以创建一个通配符子域,我们可以指定系统目录的路径。
以上配置在.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
注意: 通配符子域只会重定向未知子域。如果您创建了其他子域,它们将按原样工作,并且它们到重定向的映射不会被覆盖。
【讨论】:
以上是关于将任何子域重定向到主域上的页面的主要内容,如果未能解决你的问题,请参考以下文章