是否可以通过保留路径信息的DNS设置将一个域重定向到另一个域?


26

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

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

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

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

有什么办法吗?


我认为您想要的更多是通配符设置,但是我认为如果没有重定向,就无法实现它。
蒂姆·波斯特

任何人都可以对此做出清晰,简单的答复。...:(

@fatty,你不明白吗?
约翰·孔德

Answers:


12

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

如果您希望基于每个路径执行此操作,则不行。DNS对URL之类的东西一无所知。DNS只是将网址(example.com)的主机部分转换为IP地址。Web服务器负责确定URL应该解析的位置(或解析位置)。我相信您需要在网络服务器(http)级别上执行此操作。


1
是的,如果您在example.com上设置了CNAME,则不必托管example.com。只需将test.com主机设置为对example.com作出响应,然后在test.com上使用mod_rewrite或URL Rewriting来检测example.com主机名并重写为其自身。但是,这可能很危险。最好让example.com在test.com服务器上拥有自己的虚拟主机,并且其中仅包含重定向规则。
JasonBirch'7

8

如前所述,这不能完全通过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服务器。


或者只是添加ServerAlias指令来test.com的虚拟主机文件..
迈克尔Clerx

3

您不能仅通过DNS来执行此操作。301重定向不是DNS事物。他们是一个网络服务器的东西。

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


3

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

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

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

但是,就像其他人所说的那样,您不能仅通过DNS来做到这一点,DNS服务器只是将FQDN解析为IP地址。


我使用了它,但是我必须删除第二行(RewriteRule ^(.*)$ http://mydomain.com$1 [R=301,L])中的最后一个斜杠,否则它将向重定向的URL添加两个斜杠。还有其他人吗?
julien_c 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.