如何禁用对 www.example.com 的访问,但使 laptop.example.com 处于活动状态

如何禁用对 www.example.com 的访问,但使 laptop.example.com 处于活动状态

我的网站有两个主要部分,可以通过以下方式访问:

  • www.example.com对于一般内容

  • laptop.example.com了解更具体的内容

笔记本电脑部分已准备就绪并部署完毕。用户可以直接访问。此外,搜索引擎已开始抓取和索引它。

但是,总体内容尚未准备好;几个月内也不会准备好。

截至目前,服务器中没有 www 的文档根目录或文件,也没有其虚拟主机标签。

httpd.conf 的内容

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并将其指向我的服务器 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。子域名运行良好。

我不认为这是一种优雅的方法。仍在等待更好/更合适的方法。

答案1

ServerName 应该等于包括子域名 laptop 在内的完整域名。否则,所有内容都将可访问。

然后,您可以为 ServerName laptop.example.com 创建一个阻止,并为 www.example.com 创建一个阻止,并强制进行身份验证(除非用户有密码,否则他们无法访问),这也会阻止 Google 抓取。或者,当您仅使用 laptop.example.com 时,完全禁用 www.example.com

用户访问 www.example.com 时会转到 laptop.example.com,因为默认情况下 laptop.example.com 的内容由 ServerName example.com 提供,其中包括 laptop.example.com 和 www.laptop.com。只要 www 和 laptop 都在 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 的人

相关内容