2010-01-02 220 views
0

我有一個網站,完全是法文的。我計劃在幾個月後推出英文版本。一切工作正常,人們可以切換他們的語言和會話處理他們的語言。2個網站的IP地址

問題是,現在我買了一個不同於法國的域名,我想它需要指向主機的同一個子域名。

我想我需要編一些代碼來檢查域名,如果用戶用英文來到服務器,將會話切換到英文,否則使用法語。 我錯了嗎?

我想我會這樣做,但網站的許多其他部分可能完全不同,像廣告和圖像。 處理多語言網站的最佳方法是對這些廣告和圖像的語言進行多種比較?或在另一個子域上覆制網站並將新域名鏈接到新文件夾(我真的認爲複製將是最糟糕的長期運行)。

任何建議都可能會失敗。

(無論是在這個問題的問題都加粗)

+0

你的意思是你買了一個新的域名? – 2010-01-02 18:55:21

+0

@Daok:我更新了你的問題,所以術語更有意義。 DNS僅用於在發送數據包之前將字符串域名轉換爲IP。 – 2010-01-02 18:58:39

+0

是的,你真的不能「買一個IP地址」。您可以購買域名,並且可以購買帶有IP地址的虛擬服務器。你能澄清嗎? – jpsimons 2010-01-02 19:00:24

回答

1

,我已經建立了支持多國語言每個站點檢測到用戶的語言,然後存儲在他們的會話信息。您如何檢測他們的語言取決於您(從他們的知識產權,默認語言等),但要確保您爲用戶提供了一種更換語言的簡單方法。然後,基於會話信息,我們將更新網站副本(即,提出不同的翻譯),體驗(例如,僅顯示來自該地區的產品或新聞報道)等。

具有多個副本的網站在不同的[子]域是一個可行的選擇,雖然我不喜歡:你將不得不支持和發佈到所有這些不同的領域。

如果用戶來自您的新域,您也可以設置會話變量。只要有兩個域指向同一個地方。

+0

我應該檢查URL並更改會話,或者如果用戶切換語言是否將他自動重定向到正確的URL? – 2010-01-02 20:02:36

+0

我會檢測URL(例如,en.example.com),設置會話變量,然後重定向到實際域(例如www.example.com)。沒有實際的內容是在區域設置子域,它只是用來切換。 您的區域設置切換菜單僅僅是一個子域名鏈接列表(en.example.com,fr.example.com等)。 您可以將語言切換應用於任何不是針對www子域的URL請求(假設您將example.com轉發到www.example.com)。如果您不識別該子域,則轉發至您的默認語言。 – 2010-01-02 20:31:23

2

如果你的意思是一個新的域名,將其指向同一臺服務器第一個域,並做語言檢查(或任何要求)在PHP腳本:

if ($_SERVER["HTTP_HOST"] == "my_first_domain_name.fr") 
{ // use french site } 
elseif ($_SERVER["HTTP_HOST"] == "my_second_domain_name.fr") 
{ // use english site } 

你可以還要考慮將法文內容分解到名爲/fr的目錄以及/en中的英文內容的解決方案。

1

您應該儘可能少重複。重複您的網站將導致未來的可維護性問題。

您可以將兩個域名指向同一個服務器IP,並且有條件的服務器端代碼來確定向用戶提供哪些內容。

在PHP中,變量$ _SERVER ['SERVER_NAME']填充客戶端的http請求中的服務器名稱(例如'google.com')。

如果用戶通過不同的域名訪問相同的php腳本,可以使用這個值來決定顯示哪些內容(例如,有一個html模板,根據站點從數據庫填充相關內容)。

就廣告而言,你可以這樣做。像谷歌廣告的東西可能會爲你照顧這個。

更一般地,我們在這裏討論的是virtualhosts。有很多不同的方式來實現你所追求的,並根據問題的具體細節,平臺,託管限制等方法有所不同。

許多網站的基礎默認語言選擇(和廣告,使用的貨幣等)在geoip,回落到一些默認值。

+0

實際上,$ _SERVER ['HTTP_HOST']可能比$ _SERVER ['SERVER_NAME']更好,原因如下:http://shiflett.org/blog/2006/mar/server-name-versus- HTTP主機 – user242275 2010-01-02 19:07:38

0

有很多方法可以剪切這個cookie。請注意,由於會話由Cookie控制(至少默認爲),您的用戶將根據他們請求的域名獲得不同的會話。