我的网站可以从以下两个渠道访问
www.mysite.com/
我只想使用第一种方法。我可以阻止别人通过 IP 访问我的网站吗?
我正在使用 Litespeed,并且可以使用 .htaccess 文件对其进行配置。
答案1
对此的简单回答是将默认虚拟主机重定向到您的其他虚拟主机之一。不幸的是,我不知道如何使用 litespeed 来实现这一点,但使用 apache,您将拥有多个虚拟主机,默认虚拟主机列在最前面,其他基于名称的虚拟主机列在后面。当 Host: 标头与其中一个虚拟主机匹配时,它将由这些虚拟主机提供服务。当您通过 IP 地址连接时,它不会与虚拟主机中的任何一个名称匹配,而将使用第一个名称。在该虚拟主机中,您将重定向到您希望用户连接的主机名。
这确实要求客户端使用 HTTP 1.1,但不这样做的客户端很少见。
答案2
您的网站将总是每当浏览器发出请求时,都可以通过其 IP 地址访问http://xyzwURL。但是,使用 mod_rewrite (Apache),您可以拦截每个 http 请求并重定向到http://www.mysite.comURL。因此任何请求http://xyzw/whatever将重定向至http://www.mysite.com/whatever。如果网站可通过互联网访问,并且 Google 索引对您来说很重要,则您需要发出 301(永久)重定向,以便按名称对页面进行索引。
重写规则的示例位于http://www.webmasterworld.com/apache/3238805.htm。
# 重定向到规范域中的请求页面
重写规则 ^/(.*)$http://www.mysite.com/1 美元 [右=301,左]
答案3
您需要在 Web 服务器上设置主机标头。这样,浏览器就需要发送有效的主机标头(www.mysite.com 或 mysite.com)才能检索站点。由于端口仍处于打开状态,因此 Web 服务器仍会暴露给基于 IP 的查询,但它不应响应内容。
答案4
如果你在 Linux 服务器上,则可以使用 iptables:
iptables -I INPUT -d 你的 IP -p tcp --dport 80 -m string --to 700 --algo bm --string '主机:你的 IP' -j DROP
并且您的网络服务器将不会响应。