example.com
,当有人导航到example.com/sample/page.htm
时,我希望它重定向到test.com/sample/page.htm
。我知道可以很容易地使用
.htaccess
文件或404页面来完成此操作。但是,我正在寻找不要求我的DNS提供程序为我托管任何文件的解决方案。我只想使用DNS设置来做到这一点,例如:
CNAME记录
A记录
301转发
(我缺少任何其他DNS设置)
有什么方法可以做到这一点?
#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
评论
我认为您想要的更多是通配符设置,但是我认为没有重定向就无法实现它。任何人都可以对此做出清晰,简单的答复。...:(
@fatty,你不明白吗?