2016-03-16 37 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

我已经更新了代码 –