IIS域名白名单规则配置方法_Apache IIS屏蔽域名访问教程详解
网站运维中,URL重写和访问控制是两个高频操作场景。虚拟主机用户发现有未备案的域名绑定到自己的网站空间,访问这些域名显示的是自己的网站内容,存在合规风险。配置了域名屏蔽规则后,正常域名也无法访问,或者屏蔽的域名仍然能访问,规则没有达到预期效果。
出现这类问题,通常跟以下几个因素有关。IIS的默认网站(Default Web Site)绑定了所有未分配的IP和端口,任何解析到该服务器IP但未在IIS中绑定的域名都会访问到默认网站,如果默认网站目录是正常网站内容,恶意域名就能访问。CDN环境下,源服务器收到的HTTP_HOST是CDN回源域名而不是用户访问的原始域名,导致基于HTTP_HOST的屏蔽规则失效,需要在CDN层面配置或获取真实主机头。屏蔽规则中只匹配了域名本身,没有考虑www和非www两种形式,以及可能的端口号(如example.com:8080),导致部分形式的访问绕过屏蔽。Apache的VirtualHost配置中,第一个VirtualHost会成为默认站点,所有未在配置中绑定的域名都会匹配到默认站点,如果默认站点指向了正常网站目录,恶意域名就能访问网站内容。IIS web.config中的域名屏蔽规则放在了
结合实际运维经验,整理出以下解决方案。虚拟主机用户:通过空间商控制面板的"域名绑定"功能,只绑定自己的域名,未绑定的域名默认无法访问;或上传.htaccess/web.config配置屏蔽规则,部分空间商支持在线文件管理器编辑配置文件。IIS默认网站配置:在IIS管理器中停止默认网站,或修改默认网站的物理路径为一个空目录,同时在正常网站的绑定中只绑定自己的域名,不绑定IP或留空主机名。Apache屏蔽域名301到主域名:RewriteEngine On
RewriteCond %{HTTP_HOST} ^bad-domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.bad-domain.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L],将恶意域名的访问301重定向到自己的主域名。Apache只允许指定域名访问(白名单):RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteCond %{HTTP_HOST} !^example.com$ [NC]
RewriteRule ^(.*)$ - [F,L],非白名单域名一律返回403。Apache默认站点配置:在httpd.conf中创建一个默认VirtualHost,放在所有VirtualHost之前,DocumentRoot指向一个空目录或提示页面,
从更广泛的运维视角来看,还有一些容易被忽略的诱发因素。DNS解析未生效,域名仍指向旧服务器IP,规则修改在新服务器但用户访问的是旧服务器。服务器负载过高,Web服务进程响应超时,规则匹配结果无法正常返回。
实际操作中还需要注意以下细节。正则表达式中的特殊字符需要转义,如点号要写成.,否则会匹配任意字符。Apache的.htaccess文件需要服务器开启AllowOverride All才能生效。伪静态规则中避免使用过于宽泛的匹配,防止误拦截正常页面。IP屏蔽规则建议使用CIDR格式,既能精准屏蔽又不会误封正常用户。
除了上述问题,实际运维中还可能遇到以下相关故障。伪静态规则中中文URL乱码,需要在规则中添加NE(no escape)标志或配置编码。.htaccess规则不生效,确认Apache配置中AllowOverride是否设置为All。域名屏蔽后所有域名都无法访问,检查规则中的条件判断是否写反了。
规则配置的核心在于匹配条件和动作两个要素,把这两项搞清楚就能解决大部分问题。

更新时间:2026-09-01 16:13:49
上一篇:修改图片创建时间修改时间日期如何操作?旅行照片整理场景BMP照片EXIF时间戳调整