我正在寻找一种通过DNS a / cname记录将域重定向到其子域的方法。
是否可以完全在DNS中完成这些示例,我知道可以使用.htaccess和PHP轻松完成。
website.com => blog.website.com
website.com/hello => blog.website.com/hello
www.website.com => blog.website.com
www.website.com/hello => blog.website.com/hello
有什么想法吗?
答案 0 :(得分:3)
DNS仅用于将域名与IP地址相关联。你不能用它做重定向。
您必须在Web服务器端处理重定向。您只需要抛出一个HTTP 301 Permanently moved
,让访问者知道新地址,如果您使用的是apache,则使用.htaccess
文件,或者使用header()
函数的简单PHP脚本。 / p>
答案 1 :(得分:2)
您可以在DNS中使用CNAME将另一个名称指向同一地址作为其他名称,从而更容易更改两者的IP。 I.E.如果您的邮件www和ftp都在同一个IP上,您可以设置一个并将其他两个指向第一个,这样如果IP更改只需要更改一个。
但是,这不是重定向。如果您在网页中使用其中一个或两个,则导航时域名不会更改。这必须通过其他方式来实现。基本上你需要像上面提到的那样使用301 Permanently Moved或302 Temporarily Moved。这可以通过Web服务器或代码以多种方式完成。
如果您使用的是Apache,请查看默认情况下通常启用的mod_rewrite。如您所述,这可以进入您的配置或.htaccess。如果您使用的是其他Web服务器,请查阅其文档。
通过代码,您可以发出Location标头以实现重定向。大多数语言都有可以帮助您完成此过程的库。
答案 2 :(得分:0)
DNS(嗯,A / CNAME记录,至少)只告诉系统“这一系列字符的相应IP地址是123.456.789.000”。其余部分取决于该IP的服务器。