使用DNS重定向子域名到特定的URL

15
我将我的域名http://domain1.com通过301重定向到http://domain2.com

现在,当用户访问subdomain.domain1.com时,我想将其重定向到domain2.com/folder。

我能否在DNS中实现这个功能?还是有其他途径可以做到?

谢谢您的帮助!

4个回答

18

使用DNS不能完成这个操作。DNS用于将域名映射到IP地址,但它无法将域名解析为特定的URI。


4
补充一下正确答案。一些 DNS 管理工具具有子域名转发工具,尽管这不是纯 DNS 的事情。如果您的注册机构具有 DNS 管理工具,请务必检查,因为它可能内置了一些转发选项。 - Robert Waddell
3
这并没有完全回答提问者的问题。好的,我们知道这是不可能的,但有哪些可行的方法呢? - zur4ik
@zur4ik 抱歉晚到了,但是它说 DNS 不允许,根据标准来说这是不可能的。任何可能的解决方案都将是特定于注册机构和/或基础服务器的。 - Luke
它回答了“我能在dns中做到这一点吗?”但不是“还有其他方法吗?” - reducing activity

11
如果您使用的是Apache服务器,您可以通过.htaccess文件来实现此功能。您可以尝试将以下行添加到文件中,看看是否有效。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(?:www\.)?subdomain.domain1\.com$
RewriteRule ^(.*)$ http://www.domain2.net/subfolder$1

(或者)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.domain1\.com$
RewriteRule ^(.*)$ www.domain2.net/subfolder$1  

这个答案假设使用Apache服务器,那么其他的比如Netty呢? - Luke

5
重写内部DNS可能很麻烦,我曾经遇到这个问题,所以我编写了一个系统来解决它。是的,它使用第三方服务器有效地为您执行重定向,但您只需要两个DNS条目即可使其正常工作。试一下吧。https://redir301.link/ 使用需要添加2个DNS记录。一个指向此服务,另一个作为目标点的附加记录。DNS RFC防止CNAME记录也有关联的TXT记录,因此需要 improvisation。
要使用它,您需要将子域设置为指向redir301.link(不要忘记末尾的点!)
 subdomain.foo.com      14400   IN  CNAME   redir301.link.

然后将相关的TXT记录设置为目标URL。 TTL应至少设置为300(5分钟)。

 301.subdomain.foo.com  14400   IN  TXT "<destination URL>"

目标URL可以是任何URL,但子子域名需要是301,否则将失败。


您创建了一个帐户,已经发布了两次关于您创建的服务的内容,但没有其他贡献。请查看帮助中心:如何避免成为垃圾邮件发送者。您可以在这里谈论您的产品(需披露),但这不能是您唯一的活动。 - Stephen Ostermiller
这真的非常有帮助,也是唯一对我有效的解决方案。 - John Targaryen
你能让这个使用https吗? - John Targaryen

1

您可以混合使用DNS和Nginx来轻松解决此问题。

  1. 在您的DNS提供商上创建一个指向运行Nginx的服务器的A记录。
  2. 在您的服务器上,在/etc/nginx/sites-enabled中创建一个包含以下行的文件:
server {
  server_name subdomain.mydomain.com;
  rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接