Apache-2.2

本地 DNS 和 Apache 伺服器配置干擾 - example.com / www.example.com

  • November 5, 2013

我的網站有一個域:

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.

謝謝。

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

引用自:https://serverfault.com/questions/550909