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

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

我只想使用DNS设置来做到这一点,例如:


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

有什么方法可以做到这一点?

评论

我认为您想要的更多是通配符设置,但是我认为没有重定向就无法实现它。

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

@fatty,你不明白吗?

#1 楼

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

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

评论


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

–JasonBirch
10年7月22日在5:55

#2 楼

如前所述,这不能完全通过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的虚拟主机文件中。

– Michael Clerx
13年10月9日在16:31

#3 楼

您不能仅通过DNS来执行此操作。 301重定向不是DNS事物。它们是Web服务器。

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

#4 楼

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

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


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

但是您不能使用DNS做到这一点,正如其他人所说,DNS服务器只是将FQDN解析为IP地址。

评论


我用了这个,但是我不得不删除第二行中的最后一个斜杠(RewriteRule ^(。*)$ http://mydomain.com$1 [R = 301,L]),否则它会将两个斜杠添加到重定向的URL中。还有其他人吗?

– julien_c
2012年7月19日在18:53