2014-01-23 20 views
1

我有一個多媒體網站。在PHP中,我讓所有頁面都有唯一的ID,以便我知道要包含哪些文件。所有的邏輯都要通過index.php頁面。.htaccess重定向語言在PHP應用程序

所以,我想有montkuce.com/en/foobar發送通過GET到index.php這樣的請求:的index.php ID = foobar的& LANG = EN

這是什麼我到目前爲止,它不工作:

RewriteEngine On 

RewriteCond %{HTTP:Accept-Language} ^en [NC] 
RewriteRule ^$ http://montkuce.com/en/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^de [NC] 
RewriteRule ^$ http://montkuce.com/de/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^fr [NC] 
RewriteRule ^$ http://montkuce.com/fr/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^it [NC] 
RewriteRule ^$ http://montkuce.com/it/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^cz [NC] 
RewriteRule ^$ http://montkuce.com/cz/ [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^sk [NC] 
RewriteRule ^$ http://montkuce.com/sk/ [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(en|de|fr|it|cz|sk)/(.*)$/?$ index.php?lang=$1&id=2 [QSA,NC,L] 

回答

2

你的正則表達式在最後一條規則是一點點關閉。使用這個:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(en|de|fr|it|cz|sk)/(.*?)/?$ /index.php?lang=$1&id=2 [QSA,NC,L] 
+0

這不是真的有效。它帶我到montkuce.com/en/lang=en,它無法加載其他所有內容。 – Milos

+0

沒有這個規則不做任何重定向,所以URL不會被這個規則改變。你也可能有其他一些規則。你有沒有其他的.htaccess在任何地方? – anubhava

+0

我改了最後一行說: RewriteRule ^(en | de | fr | it | cz | sk)/(。*?)/?$ http://montkuce.com/index.php?lang=$1 [QSA,NC,L] 但現在它重定向到montkuce.com/en/foobar montkuce.com/index.php?lang=en&id=foobar 這基本上是我想要的,除了我想原來的URL留在我的瀏覽器的地址欄 – Milos