2012-12-25 104 views
1

過去幾天我一直堅持創建一個基於PHP的多語言網站。我已經嘗試了很多解決方案,但目前還沒有運氣。多語言網站php

這是我怎麼會喜歡我的URL看起來:
http://www.example.com/en/about
http://www.example.com/cs/o-nas

我一直在使用這種重寫規則之前,我決定實現多語言支持,它只是正常工作:

RewriteBase /kittytea/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]+)$ ?page=$1 [L] 

我的鏈接看起來是這樣的:

<a href="about"> 

有沒有人有想法如何添加多語言支持?我熟悉使用GET方法傳遞URL參數。

我可能會補充說我正在使用一個簡單的PHP SWITCH語句來加載單個網站部分。

PS - 這是一個非常小的網站,我不需要一流的解決方案。我只是想讓它工作:)

謝謝!

回答

1

您可以嘗試包括2個字母語言代碼重寫的一部分:然後

RewriteBase /kittytea/ 

# with language 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z]{2})/([a-zA-Z0-9_-]+)$ ?lang=$1&page=$2 [L] 

# original, without language 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-zA-Z0-9_-]+)$ ?page=$1 [L] 

你的PHP腳本將需要檢查在lang參數的2字母語言代碼,並返回相應的內容。

然後,你需要改變你的鏈接:

<a href="en/about"> 
+0

甚至可以將它們組合成一個規則'重寫規則^(([AZ] {2})/)([A-ZA- Z0-9 _-] +)$?lang = $ 2&page = $ 3 [L]' – Gerben

+0

謝謝!它似乎工作正常,但是,我的CSS和圖像停止加載。我相信它與URL中的虛假「/ en」目錄有關。我查了一些解決方案,但沒有人工作。 –

+0

@OndraMatoušek因爲額外的路徑,您需要爲您的css/images/scripts使用絕對URL,或者您可以嘗試在頁面的標題中添加''(或任何URI基礎應該)。 –