我的网站的两个主要部分可以通过以下方式访问:
www.example.comlaptop.example.com膝上型电脑部分已经准备好并部署好了。用户可以直接访问它。此外,搜索引擎已经开始爬行和索引它。
但是,总的内容还没有准备好,几个月后才会准备好。
到目前为止,www服务器中没有文档根或文件,也没有虚拟主机标记。
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /path/to/website/subdomain/root
ServerName example.com
ServerAlias laptop.example.com
<Directory /path/to/website/subdomain/root>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>里面没有其他虚拟主机标记。
在我的域名注册控制面板中,我为子域laptop添加了一个A记录,并将其指向我的服务器IP。还有另外两个条目-- @和www,它们都指向我的IP。我无法编辑/删除www条目。
我认为这就是阻止访问www所需的全部内容。但它不起作用!
当用户键入www.example.com时,他们会被带到laptop.example.com。我不希望这种事发生。应该显示一些默认的浏览器错误消息,如“服务器未找到”或“未找到页面”。
我怎么才能做到这一点?
一种解决方案:我在httpd.conf的末尾添加了以下内容
<VirtualHost *:80>
ServerName www.example.com
</VirtualHost>注意没有文档根目录!啊,真灵。如果我访问http://www.example.com或http://example.com,我将得到404。子域运行得很好。
我不认为这是一种优雅的方法。还在等待一种更好的方法来做这件事。
发布于 2013-01-11 13:17:12
ServerName应该等于完整的域名,包括子域笔记本电脑。否则,整个内容将是可访问的。
然后,您可以为ServerName laptop.example.com创建一个块,并创建另一个带有www.example.com的块,强制进行身份验证(除非用户有密码,否则用户将无法访问),这也会阻止谷歌爬行。如果只使用www.example.com,则禁用完全laptop.example.com。
用户在进入www.example.com时会使用www.example.com,因为默认情况下,laptop.example.com的内容是为ServerName example.com服务的,其中包括laptop.example.com和www.laptop.com。只要www和膝上型电脑都在DNS中,它们就会有相同的内容。
只有当多个域名必须重定向到块ServerAlias中定义的内容时,才是VirtualHost。例如,如果DNS中有laptop1和laptop2,并且希望为两者应用相同的VirtualHost。
希望这能解决你现在的问题..。
编辑以回答您的评论:
我会在我的配置文件中这样做:
<VirtualHost 192.168.0.103:80>
ServerName laptop
ServerAlias laptop laptop.example.com
DocumentRoot /var/www/laptop
</VirtualHost>然后,如果我想为名为www的第二个VirtualHost应用另一个内容,我会添加一个类似于这一段的第二段,但是使用不同的ServerName、ServerAlias、DocumentRoot。我只想解释一下,您可以通过身份验证来确保在开发过程中您是唯一访问VirtualHost的人。
https://serverfault.com/questions/466163
复制相似问题