我有一个域foo.this.com我希望它映射到bar.that.com,所以我创build了我的注册界面上的一个CNAME。 但是,当我尝试到达foo.this.com时,它显示一个404指向bar.that.com的IP。
所以我的问题是,我需要在我的服务器上(configurationbar.that.com的网页)configurationfoo.this.com来configuration什么?
提前致谢。
这取决于你使用的是什么http守护进程。
如果您使用Apache HTTPD和虚拟主机条目,则很可能需要将ServerAlias指令添加到您网站的VirtualHost条目。
<VirtualHost *:80> ServerName bar.that.com ServerAlias foo.this.com DocumentRoot /home/that.com ... snip ... </VirtualHost>
“ 基于名称的虚拟主机”(Name Based Virtual Hosting)这个术语就是你想要做的
从技术上讲,Web浏览器将bar.that.com
parsing为IP地址(例如1.2.3.4
)。 然后它发送一个HTTP请求到1.2.3.4
。 主持人通常不知道用来解决这个问题的名字。
但HTTP 1.1的一个特殊function允许浏览器将主机名插入到HTTP头中。 一个典型的HTTP标题看起来像这样:
GET / HTTP/1.1 Host: bar.that.com
然后,Web服务器根据Host:
头的内容决定要传递哪些页面。 当然,你必须告诉它如何决定它的configuration。 对于Apache来说,请看这里 ,但任何现代的Web服务器将有类似的东西。
基于名称的虚拟主机被广泛使用,每当您听到“共享主机”一词时,都会想到基于名称的虚拟主机。 HTTP 1.1足够长,以便所有使用的浏览器都支持它。 只有非常非常老的浏览器,如NCSA Mosaic,不支持它。
如果您使用IIS,那么您需要将主机标题添加到bar.that.com网站foo.this.com
对于nginx,如果你想有一个指令处理多个域/子域,你可以把它们全部放在server_name指令中。 例如,
server { listen 80; server_name foo.bar.com baz.foo.com bar.foo.com *.foo.com; [.......] }