2013-07-25 45 views
0

我試圖改變一個網站,以多國語言,所以我的URL是這樣的:的.htaccess衝突的重寫規則

www.company.com/en/about 
www.company.com/fr/about 

應該指向的index.php LANG = EN &什麼=約?

所以我定義了以下重寫規則(工作)

RewriteRule ^en/(.*)$ ?lang=en&what=$1 [NC,L] 
RewriteRule ^fr/(.*)$ ?lang=fr&what=$2 [NC,L] 

,但我還需要在主頁網址爲www.company.com/en(指着index.php?lang=en) 不適用於此規則。

最好的解決辦法是這樣的

RewriteRule ^(.*)/(.*)$ ?lang=$1&what=$2 [NC,L] 

,但將所有的URL,像href='css.css'樣的參考,所以它攪亂了整個頁面。

那麼我應該如何限制第一個GET變量爲兩個字符?或其中一種定義的語言?

回答

1

嘗試:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]{2})(?:/(.*)|)$ /?lang=$1&what=$2 [L] 

第一個分組,([a-z]{2}),抓住了2個字母的語言。第二個可選組合捕捉「什麼」。如果什麼都沒有,那麼「什麼」將是空白的。

+0

謝謝!它有效,但我必須將'/?lang ..'改爲'?lang ..' – jeff