是否可以仅通过 DNS 设置将通配符子域名指向顶级域名?
我想要将 *.mydomain.com 重定向到 mydomain.com。
mydomain.com 托管在第三方服务上。我无法访问我网站的任何 apache 配置文件。
谢谢你,马尔科姆
答案1
从 DNS 技术层面来看,您当然可以拥有:
*.example.com. IN CNAME example.com.
尽管更好的配置是:
$ORIGIN example.com.
@ IN SOA ( ... )
IN A n.n.n.n ; put your server IP here
www IN A n.n.n.n ; and here
* IN CNAME www
这将确保查找SOA
或MX
记录的人foo.example.com
不会得到意外的答案。
然而,如果您的 Web 服务器没有设置为接收人们开始使用来指向的通配符主机名,那么他们只会收到错误页面。
为了使其工作,你需要类似这样的东西:
<VirtualHost .....>
ServerName wwww.example.com
ServerAlias example.com
ServerAlias *.example.com
</VirtualHost>
然后有位于主配置中,而不是在.htaccess
文件中。
或者,如果目的是让所有通配符子域名最终都位于同一站点,请使用 HTTP 级重定向,以便所有 URL 最终都将客户端重定向到首选的规范 URL(例如,www
没有任何前缀的 URL)
答案2
假设您可以毫无问题地在您的域名的 DNS 中设置通配符 (*.example.com)(如果不能,您可以将您的域名移动至例如 freedns 服务)。
DNS 服务仅将域名转换为 IP,它与任何服务(http、ftp、smtp)均无关,因此它无法将 http 请求从一个域名重定向到不同的域名。
但是你可以:
- 将 *.example.com 指向其他支持 http 通配符和重定向的 web/http 服务器。
- 联系您的 http 服务提供商在其服务器上设置通配符
此外,大多数流行/使用的控制面板(cPanel,DirectAdmin等)都支持通配符,因此您可以自己进行设置。
答案3
如果您的 DNS 提供商支持通配符 CNAME,那么这应该可行。请参阅问题 44618