2013-05-29 65 views
1

我有幾個網站,我爲此構建了一個CMS,將語言保存在一個XML文件中,並根據頁面和語言選擇器,它將顯示正確的數據。我cuurently有8種不同的語言爲每個站點和URL是這樣的:使用.htaccess文件重寫多種語言的友好的php URL

http://leclosdamboise.com/index.php?lang=fr

http://leclosdamboise.com/rooms.php?lang=en

http://leclosdamboise.com/hotel.php?lang=de

我想擁有它,這樣的URL重寫一下像這樣:

http://leclosdamboise.com/fr/index.php

http://leclosdamboise.com/en/rooms.php

http://leclosdamboise.com/de/hotel.php

我花了幾個小時通過論壇梳理和沒能找到一個合適的解決方案。我的.htaccess文件目前看起來是這樣的:

SetEnv PHP_VER 5_TEST 
SetEnv REGISTER_GLOBALS 0 

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([A-Za-z0-9]+)$ index.php?lang=$1 [QSA,L] 

這並不做任何事情,網址仍然是醜陋的繼女版。上面的鏈接是其中一個網站的實際鏈接。一旦我解決了這個問題,我需要將它分解到幾個站點,但一直在努力解決這個問題。誰能告訴我我做錯了什麼?

回答

2

這應該在根目錄中的一個.htaccess文件工作:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 

RewriteRule ^([^/]+)/([^.]+)\.php /$2.php?lang=$1 [L,NC,QSA] 
+0

嗯,好吧,這似乎工作。但是現在我所有的相對鏈接都搞砸了,因爲頁面認爲它更深一層。有沒有辦法解決這個問題呢,還是我現在需要絕對的路徑? ... – Matto

+1

也許修改我的答案解決了這個問題。如果沒有,請檢查[這個答案](http://stackoverflow.com/questions/15446835/htaccess-to-redirect-images/15447517#15447517)關於如何使用BASE元素。可能有幫助。 –

+1

是的,通過向我的標題添加所有圖像等相關鏈接仍然有效。謝謝。現在我只需要爲索引頁面添加語言檢測,而且我都很好。 – Matto