例如,我的域是example.com
,当有人导航到时example.com/sample/page.htm
,我希望它重定向到test.com/sample/page.htm
。
我知道可以使用.htaccess
文件或404页面轻松完成此操作。但是,我正在寻找一种不需要我的DNS提供程序为我托管任何文件的解决方案。
我只想使用DNS设置来执行此操作,例如:
- CNAME记录
- A记录
- 301转发
- (我缺少的任何其他DNS设置)
有什么办法吗?
例如,我的域是example.com
,当有人导航到时example.com/sample/page.htm
,我希望它重定向到test.com/sample/page.htm
。
我知道可以使用.htaccess
文件或404页面轻松完成此操作。但是,我正在寻找一种不需要我的DNS提供程序为我托管任何文件的解决方案。
我只想使用DNS设置来执行此操作,例如:
有什么办法吗?
Answers:
您可以通过dns(如果愿意,可以使用CNAME)将example.com/test.com解析为相同的网络服务器(IP),这样就可以了。
如果您希望基于每个路径执行此操作,则不行。DNS对URL之类的东西一无所知。DNS只是将网址(example.com)的主机部分转换为IP地址。Web服务器负责确定URL应该解析的位置(或解析位置)。我相信您需要在网络服务器(http)级别上执行此操作。
如前所述,这不能完全通过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服务器。
这是.htaccess
我用来将所有请求从www.mydomain.com重定向到mydomain.com 的确切规则(因为较短的是我的规范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地址。
RewriteRule ^(.*)$ http://mydomain.com$1 [R=301,L]
)中的最后一个斜杠,否则它将向重定向的URL添加两个斜杠。还有其他人吗?