it-swarm.cn

有没有办法通过DNS设置将一个域重定向到另一个域保留路径信息?

例如,我的域名为example.com,当有人导航到example.com/sample/page.htm时,我希望它重定向到test.com/sample/page.htm

我知道这可以使用.htaccess文件或404页面轻松完成。但是,我正在寻找一种解决方案,不需要我让我的DNS提供商为我托管任何文件。

我想仅使用DNS设置来执行此操作,例如:

  • CNAME记录
  • 一个记录
  • 301转发
  • (我缺少的任何其他DNS设置)

有没有办法做到这一点?

26
Senseful

您可以通过dns(如果您愿意,可以使用CNAME)将example.com/test.com解析为同一个Web服务器(IP),这样就可以了。

如果你想在每个路径上做到这一点而不是没有。 DNS不知道像URL这样的东西。 DNS只是将url(example.com)的Host部分转换为IP地址。 Web服务器负责确定URL应该解析的内容(或位置)。我相信您需要在网络服务器(http)级别执行此操作。

12
Thomas

如前所述,这不能完全用DNS完成。但是,如果您将example.com的DNS引用到与test.com相同的服务器,则配置Apache以完成您希望执行的操作非常简单。只需添加以下内容:

<VirtualHost *:80>
  ServerName example.com
  Redirect permanent / http://test.com/
</VirtualHost>

这将把example.com的任何传入链接重写为test.com的链接,保留路径。

此外,您的DNS提供商不需要为您托管任何文件,因为这仅依赖于您已经为test.com运行的Web服务器。

8
Kris

您无法单独通过DNS执行此操作。 301重定向不是DNS的事情。他们是网络服务器的事情。

您可以做的是将example.com DNS条目指向与test.com相同的服务器,并将example.com设置为test.com的别名域。

3
intlect

以下是我用来将所有请求从www.mydomain.com重定向到mydomain.com的确切.htaccess规则(因为较短的是我的规范URL):

RewriteCond %{HTTP_Host} ^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://mydomain.com/$1 [R=301,L]

这很容易修改为从foo.com重定向到foobar.com,同时保留请求,客户端只获得301重定向到适当的域。

但是,您不能像其他人所说的那样“只是”使用DNS,DNS服务器只是将FQDN解析为IP地址。

3
Tim Post