本地 DNS 和 Apache 服务器配置冲突 - example.com / www.example.com

本地 DNS 和 Apache 服务器配置冲突 - example.com / www.example.com

我的网站有一个域名:

example.com

我还使用以下行运行本地 DNS:

www IN CNAME server.<host_provider>.com.
dev IN CNAME server.<host_provider>.com.

因此www.example.comdev.example.com分别转到由托管公司托管的生产和开发站点。

在我的主站点的 Apache 配置中,我正在运行如下重写规则:

RewriteEngine ON
RewriteCond %{HTTP_HOST} ^example\.com$|!dev\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=302,L,NE]

这条规则似乎有效,因为当您脱离网络并example.com在浏览器中访问 时,您会被重定向到www.example.com

问题是,当我上网时,我进入example.com一个错误页面,提示找不到页面。没有服务器错误;只是找不到页面,好像本地 DNS 导致它在那时停止查看。

我还使用 Nettica 提供 DNS 服务,并设置了以下 A 记录:

example.com Host (A) Default xxx.xx.xxx.xx

这处理外部 DNS,但我的问题似乎与我的内部 DNS 有关。

例如,在我的网络内部,我可以使用如下地址访问网络上的服务器:

server.example.com server1.example.com server2.example.com

这些是在我的本地 DNS 中配置的。我只是不确定如何越过“空”子域并转到example.com

由于可能不太清楚,因此在此补充。如果我在网络之外example.com,在另一个网络上,例如example123.com,那么当我访问时,example.com我会被重定向到www.example.com预期的位置,例如,Apache 重写规则正在运行。

编辑

在@ErikE的帮助下,经过故障排除和测试,我找到了答案。似乎我发现了另一种方法以及@ErikE的建议:

在本地 DNS 中添加以下任一个似乎都可以:

example.com IN CNAME server.<host_provider>.com.
example.com IN CNAME www.example.com.

谢谢。

答案1

在我看来,您需要在本地 DNS 中为域 example.com 本身设置一个空的 A 记录(或具有相同效果的其他记录)。

如果我没记错的话(距离我上次这样做已经有一段时间了),在 BIND 中,可以在 example.com 的区域文件中使用以下语法来实现:

A    1.2.3.4

或者在 Windows DNS 中:

@    IN A    1.2.3.4

但是,例如使用 dnsmasq,配置方式将完全不同。那么,您在本地使用哪个品牌的 dns 服务器?

我不确定是否可以用同样的方式写入 CNAME 记录。如果您希望引用您的提供商,而不是在本地 DNS 中明确写入 IP 地址,您当然可以尝试。

相关内容