2016-03-16 38 views
0

我試圖爲不同的語言創建不同的URL,例如 沒有「en」作爲實際文件夾(shift是一個實際的子文件夾)。我希望'en'是我可以在我的PHP代碼中使用的變量。這裏是我的htaccess的樣子:使用htaccess爲不同的語言創建不同的URL使用htaccess

RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /shift/$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^public/index.php [QSA,L] 

RewriteRule ^(en|de|fr)/(.*)$ $2?lang=$1 [L,QSA] 
RewriteRule ^(.*)$ $1?lang=en [L,QSA] 

這裏是我的PHP代碼:

var_dump($_GET['lang']); 

當我去它給了我404和PHP錯誤:「未定義指數:郎」。

回答

1

你需要編輯.htaccess喜歡這個 -

RewriteEngine On RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?lang=$1 RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?lang=$1

的index.php

echo $_GET['lang'];

如果url是 - http://example.com/en,則輸出be- en

你可以用語言做其他事情。

如果您想給頁面的不同版本,我建議您爲每種語言使用一個頁面,並在網址中要求輸入語言時包含它們。

對於示例 - 如果有人類型http://example.com/en,在的index.php你需要做的這個 -

if($_GET['lang']=="en") { 
    $_SESSION['language']="en"; //Adding a session makes your life easier 
    include("en.php"); 
//everything else 
    } 

我已經更新了重寫規則。一探究竟。

+0

當我添加您編寫的規則時,出現「內部服務器錯誤」。 – AdamGold

+0

我已經更新了代碼 –