通过 /etc/hosts 为被阻止的网站生成正确的 404 页面,而不是重定向到本地主机

通过 /etc/hosts 为被阻止的网站生成正确的 404 页面,而不是重定向到本地主机

我通过编辑 /etc/hosts 并按以下方式添加几个换行符来阻止一些网站:

0.0.0.0 www.域名.com

而且它确实有效。唯一的问题是:当访问被阻止的网站时,浏览器将被重定向到我的http://localhost,从而导致在我的本地主机根环境中运行目录列表或网站演示。

这不是什么大问题,但我更喜欢标准错误,指出该网站无法访问(例如 404 页面)。这可能吗?

答案1

我假设您正在运行本地 Web 服务器?看起来您是在运行,所以我假设是这样。另外,我希望您使用的是 Apache,尽管其他 Web 服务器可能具有相同的功能,但我没有使用过其他任何服务器。

如果您要屏蔽大量网站,这可能会带来很多麻烦,但您可以创建一个虚拟域,其中包含 404 页面的起始页。如果您懂 PHP,您可以用被屏蔽网站的名称自定义它,以显示更具信息性的消息。

hosts 文件保持不变,并将在 中对 Apache 的配置文件进行添加/etc/apache2/sites-enabled。最初,只有文档根目录,我认为定义为/var/www;您不仅可以更改它,还可以添加任意数量的具有相关名称和别名的其他目录。

我的想法是为包含 404 页面的新目录添加一个。确定目录和“站点名称”,然后向文件添加新条目。例如:

<VirtualHost *:80>
    <Directory /var/www/my404>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    DocumentRoot /var/www/my404/
    ServerName my404.loc
    ServerAlias www.domain.com
</VirtualHost>

您可以使用 向 hosts 文件添加条目localhost my404.loc,然后输入 即可在本地访问该页面进行测试http://my404.locwww.domain.com如果您的 hosts 文件中有该条目,希望您也可以通过 访问它。随着您在 hosts 文件中添加更多条目,您应该能够继续添加更多“ServerAlias”条目。

我希望这对您来说已经足够清楚,甚至可能对您有所帮助。如果您认为这有帮助,但还不够清楚,请随时询问。

没有保证,因为我从来没有真正尝试过这一切。:)

相关内容