丫忠 今天終於花了點時間測試了一下中文網址對dns 及 apache這兩個伺服器的影響,講到 中文網址 的部份,丫忠以前的觀念是,誰會想輸入中文網址,除了要鍵入的鍵盤數比較多外,還要中英文輸入法切換…等不方便。
但是,這是站在丫忠的角度去想,如果對於剛接觸電腦或者對於網際網路不熟悉的使用者而言,他或許認為輸入【丫忠的伺服器.tw】或者輸入【xxx公司.tw】會比輸入英文網址來的好記;另外,以SEO角度而言,G神把中文網址部份加大權重,也並不是不可能的事。
所以囉,只要有需求就會有市場,只要有市場再不想去做的事也要做。既然做了就把它記錄下來給大家參考囉。
在講到dns及apache中文網址的觀念及設定以前,有一個很重要的觀念一定要很清楚,否則您會不知道丫忠在講什麼。這個就是 punycode,簡單一句就是將 中文網址 做轉碼的動作。或者您可以參考wikipedia的說法【punycode是一個根據RFC 3492標準而製定的編碼系統,主要用於把域名從地方語言所採用的Unicode編碼轉換成為可用於DNS系統的編碼。而該編碼是根據[1](由IANA制定),Punycode可以防止所謂的IDN欺騙。】,除了需要先了解 punycode外,你還必須有設定 dns(named.conf及zone)以及apache(虛擬主機)的經驗。
如果你的目的跟丫忠一樣,目的是讓 DNS 及 apache 支援中文網址的話,那麼有一個流程是丫忠試出來的結果,這觀念對於 dns 及 apache的設定上會有很大幫助。底下做個例子說明:
例子:當使用者從瀏覽器輸入【丫忠的伺服器.tw】時,在dns及apache伺服器是要如何接收這樣的中文網址呢?
流程如下:
1. 使用者從瀏覽器輸入【丫忠的伺服器.tw】
2. 瀏覽器會將【丫忠的伺服器.tw】轉換成 punycode (punycode 為 xn--diqrzk6o8qkq4iw8x.tw)
3. 依據此punycode(xn--diqrzk6o8qkq4iw8x.tw) 去 dns伺服器查詢IP
4. 當查詢到IP後,再將此punycode(xn--diqrzk6o8qkq4iw8x.tw)連至 apache伺服器
以上的流程中有一個很重要的地方,那就是 dns 及 apache都是依據 punycode 去做查詢IP 及 連結至網站,而不是依據 中文網址;所以,我們在做dns 及 apache設定時,都是要依據 punycode 而不是 中文網址。
有了以上的概念後,dns及apache的設定就跟設定英文網址沒什麼差別,只是將英文網址改成punycode而已,講到這裡你可能會需要 punycode轉碼工具 以及 dns中文網址設定範例 以及 apache中文網址設定範例,丫忠就將這些工具整理如下:
1. punycode轉碼工具 (本站的 punycode轉碼工具 或者 PHP可以藉由 idn_to_ascii 函式轉碼)
2. dns中文網址設定範例
3. apache中文網址設定範例:只需要修改 ServerName 即可
原本的vhost.conf設定
<VirtualHost *:80>
ServerName 丫忠的伺服器.tw
…..
</VirtualHost>
punycode轉碼後的設定
<VirtualHost *:80>
ServerName xn--diqrzk6o8qkq4iw8x.tw
…..
</VirtualHost>

