# 问题分析

1. **问题现象**：规则更新后，规则没有生效。用户添加或删除规则后，DNS服务器仍然使用旧的规则进行域名屏蔽。

2. **问题根源**：
   - 在`addDomainRule`方法中，当添加一个域名规则时，它会为该域名的所有子域名也添加规则。例如，添加`example.com`规则时，会同时添加`example.com`和`com`规则。
   - 但是，在`RemoveRule`方法中，当删除一个域名规则时，它只删除了指定的域名规则，而没有删除为子域名添加的规则。
   - 这导致即使删除了主规则，子域名规则仍然存在，因此规则仍然生效。

3. **具体问题**：
   - 当添加`||test.example.com`规则时，`addDomainRule`方法会添加`test.example.com`和`example.com`两个规则。
   - 当删除`||test.example.com^`规则时，`RemoveRule`方法只会删除`test.example.com`规则，而不会删除`example.com`规则，因此`example.com`仍然会被屏蔽。
   - 此外，`RemoveRule`方法在处理通配符和URL匹配规则时，也没有正确处理子域名规则的删除。

# 修复方案

1. **修复`RemoveRule`方法**：
   - 当删除一个域名规则时，同时删除为该域名的所有子域名添加的规则。
   - 确保删除规则时，同时更新所有相关映射，包括主规则和子域名规则。

2. **验证修复效果**：
   - 启动DNS服务器
   - 添加一条域名规则，例如`||test.example.com`
   - 验证该规则及其子域名规则都被正确添加
   - 删除该规则
   - 验证该规则及其所有子域名规则都被正确删除
   - 验证DNS服务器不再使用该规则进行域名屏蔽

# 实现步骤

1. 修改`shield/manager.go`文件中的`RemoveRule`方法：
   - 在删除域名规则时，添加删除所有相关子域名规则的逻辑
   - 确保删除规则时，同时更新所有相关映射

2. 测试修复后的功能：
   - 启动DNS服务器
   - 访问Web界面，添加一条本地规则，例如`||test.example.com`
   - 验证该规则被正确添加
   - 点击删除按钮删除该规则
   - 验证该规则及其所有子域名规则都被正确删除
   - 验证DNS服务器不再使用该规则进行域名屏蔽

# 预期结果

- 用户添加规则后，规则立即生效
- 用户删除规则后，规则立即失效
- 规则更新后，DNS服务器使用最新的规则进行域名屏蔽
- 本地规则文件被正确更新，添加和删除的规则都能正确反映在文件中