我对C-NAMES、A-RECORDS、名称服务器等等一点也不了解,所以在这一点上请原谅我:
我想将subdomain.example.org重定向到另一个域somethingelse.com。我确实拥有两个域,并且两个域都运行在共享主机上。在创建子域时,我能做的就是做一个HTTP重定向(302,恶心!)或者是帧重定向。
我还可以在一个主机上设置DNS记录,比如名称服务器CNAME --但是我会知道我在做什么。
请向我解释名称服务器的路由是如何工作的,以及我应该如何(即使在当前主机下不可能)将subdomain.example.org重定向到somethingelse.com,而用户可见的URL停留在"subdomain.example.org“。
发布于 2011-02-01 20:44:13
名称服务器不路由任何内容。名称服务器响应对名称的请求,并最终返回IP。CNAME记录返回一个名称,然后查找该名称以获取IP。您对DNS记录真正能做的唯一事情就是确保您的名称被设置,返回服务器的IP地址,该服务器将接受流量并做您想做的事情。
如果您使用基于名称的虚拟主机安装设置来设置web服务器,并且该虚拟主机的主名称是somethingelse.com,则可以为该虚拟主机subdomain.example.org设置一个附加名称。在DNS中,您将记录设置为返回服务于somethingelse.com的虚拟主机的IP。
托管在somethingelse.com上的网站必须在任何可能的地方使用相对链接,否则用户将很快意识到它们现在已经切换到了另一个域。
..。这是关键的一点。我该怎么做?
只需创建将名称与IP关联的A记录,或指向指向所需IP的A记录的CNAME记录即可。
DNS什么都不知道。需要在HTTP服务器上处理所要求的内容。
否则我可以把我的域名在google.com,并使它看起来像我的网站?
您可以将DNS记录指向任何您喜欢的IP地址。在HTTP的情况下,部分请求包括要访问的主机名。Google服务器可以基于HTTP请求的一部分主机名选择拒绝。
如果您是Google应用程序的客户,甚至支持设置指向Google服务器的DNS名称。有一个过程,你最遵循告诉谷歌,你将使用什么名字,为一个特定的网页。然后Google会相应地调整它们的配置。
如果您正在使用不包括用于访问的主机名的其他协议,那么服务器将无法知道什么是什么。您可以通过创建像googledns.example.org IN A 8.8.8.8这样的记录轻松地为自己测试,然后运行ping googledns.example.org,Google的DNS服务器将响应ping。您以前用于ping命令的名称根本不包含在ICMP回送答复中,只有IP地址。
发布于 2012-11-24 09:07:58
为什么不能在subdmain所在的文件夹中设置一个.htaccess文件(带有301重定向)。
例如:
以/是您的子域的根目录,http://somethingelse.com是您希望它发送的位置。
为我工作。
发布于 2011-02-01 23:22:45
使用CNAMES的DNS重定向不会按照您希望的方式在共享主机上工作。
就我们的目的而言,假设subdomain.example.org有一个指向somethingelse.com的“CNAME”记录,而somethingelse.com有一个'A‘记录。访问subdomain.example.com时,首先查询DNS服务器以确定正确的IP地址。DNS服务器将看到CNAME记录并递归地确定somethingelse.com的IP地址,然后返回到您的桌面。
然后你的浏览器会联系那个IP地址,它会要求subdomain.example.com。事实上,它甚至不知道somethingelse.com的存在。
如果你有一个专用的盒子,你可以让CNAME像你想的那样工作,但是你会失去使用一个基于名字的虚拟主机的能力。对于基于IP的vhost,任何指向给定IP的域都将提供相同的内容.
要使浏览器的地址栏在从subdomain.example.org服务页面时显示为somethingelse.com,您可以重新考虑使用主机提供的框架重定向。
如果主机提供mod_proxy,另一种可能是在subdomain.example.com的虚拟主机配置中设置反向代理:
ProxyPass / http://somethingelse.com/
ProxyPassReverse / somethingelse.com/这将导致subdomain.example.com在将subdomain.example.com报告为源域的同时提供一些内容。
https://serverfault.com/questions/229809
复制相似问题