通配符DNS仅用于一级子域名

3
我想知道如何为仅限于第一级子域名设置通配符DNS,例如:
user.example.com     // valid
www.user.example.com // invalid

我已经按以下方式配置了我的BIND区域域名:

; example.com
$TTL 86400
@       IN      SOA     ns.example.com. domain.example.com. (
                                        2014021001 ; Serial
                                        28800      ; Refresh
                                        1800       ; Retry
                                        604800     ; Expire - 1 week
                                        86400 )    ; Minimum

                IN      NS      ns
                IN      NS      ns1

ns              IN      A       1.2.3.4 ; An IP
ns1             IN      A       1.2.3.4 ; An IP

@               IN      A       1.2.3.4 ; An IP
*.example.com   IN      A       1.2.3.4 ; An IP
www             IN      A       1.2.3.4 ; An IP

@               IN      TXT     "v=spf1 a mx -all"

我的Apache虚拟主机配置如下:

<VirtualHost 1.2.3.4:80>
  ServerAdmin domain@example.com
  DocumentRoot /var/www/html/example.com
  ServerAlias www.example.com
  ServerName example.com
  ErrorLog logs/example.com-error_log
  CustomLog logs/example.com-access_log common
</VirtualHost>

<VirtualHost 1.2.3.4:80>
  ServerAdmin domain@example.com
  DocumentRoot /var/www/html/apps.example.com
  ServerAlias *.example.com
  ServerName apps.example.com
  ErrorLog logs/apps.example.com-error_log
  CustomLog logs/apps.example.com-access_log common
</VirtualHost>

Please help!


你如何解决这个问题? - Shankar S Bavan
1个回答

3

在DNS中无法做到这一点 - 通配符只能匹配一个或多个DNS标签。

您或许可以在Apache服务器上实现,例如使用mod_rewrite来匹配提供的主机名,并在主机名无效时返回404错误。


1
这就是我在提问之前所做的,但感谢您澄清这是不可能的。 ;) - Fong-Wan Chau
@alnitak 如何使用 mod_rewrite? - Shankar S Bavan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接