Apache-2.2

萬用字元 DNS 條目以匹配 lang 子域

  • June 26, 2010

我們有一個指向 xxx1 的網站 www.example.com 和一個包含多個迷你站點的系統,所有這些迷你站點都有指向 xxx2 的 subdomains.examples.com

基本上我們所擁有的是一個萬用字元 DNS 條目,它基本上可以匹配任何可能的子域,一旦到達 xxx2,apache vhost 將攔截並基本上將其重定向到一個 php 腳本,後者又會知道要服務哪些迷你站點。

然而,在 www.example.com 上,我們提供翻譯成多種語言的內容,直到幾週前,您還可以通過點擊標誌來切換語言,然後您就會收到翻譯後的內容。唯一的問題是 URL 不會改變,而且 SEO 明智,這不是最好的解決方案。

現在我不能改變子域的處理方式(被重定向到 xxx2),因為我們有數百個,如果不是數千個迷你站點。

我必須想出一個解決方案,讓 language.example.com 重定向到 xxx1,然後是一個重寫規則,該規則基本上會將假子域重寫為 URL,以便將語言的參數傳遞給 example.com

解決方案是在萬用字元 DNS 條目之前將所有可能的語言列為 DNS 條目。我幾乎可以肯定不可行的另一種解決方案是在 DNS 條目中使用某種正則表達式,以匹配所有帶有 2 個字母的子域( en|es|fr|cn|cl 等…)

有任何想法嗎?

您不能在 DNS 中進行兩個字母匹配,萬用字元專門匹配一個或多個標籤,這就是 DNS 中模式匹配的全部範圍。

您是否考慮過www.example.com/language/改用?

然後在您的重寫規則中,您可以(例如)en.example.com重定向到www.example.com/en/,這可以基於檢查該特定語言的子目錄是否存在的條件測試來完成。

如果該子目錄不匹配,則它將代表您的迷你站點之一。

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