本地 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.com
,dev.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.
謝謝。
在我看來,您需要在本地 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 地址,您當然可以嘗試。