多语言脚本未在请求的页面中正确重定向

时间:2014-11-16 17:39:14

标签: php .htaccess

我正在为包含4种语言的网站制作多语言脚本 该脚本生成动态URL,如下所示:

http://www.example.com/index.php?lang=es
http://www.example.com/index.php?lang=de
and so on...

考虑到需要拥有SEO友好URL,我已经在.htaccess文件中重写了它们,如下所示:

   RewriteEngine On
   RewriteRule ^es/([^/]*)\.html$ /index.php?lang=$1 [L]

为了显示静态网址:http://www.example.com/es/es.html等...

到目前为止很好......
我还修改了PHP代码如下:

旧代码和新代码:

foreach($langArray as $language){
echo "<a href='?lang=". $language ."'><img src='trad/flag_". 
$language .".png' /></a> ";
}


$langArray = $translate->getAllLanguages();
foreach($langArray as language){
echo "<a href='".$language .'/'.$language.".html'><img src='trad/flag_". 
$language .".png'   /></a> "; 
$langArray[$i] .".png' /></a> ";
}

如果我点击其中一个标记,链接会在所需页面上重定向。
例如:

www.example.com/es/es.html

如果我登上另一面旗帜,对于istance German,该页面将重定向到以下页面:      www.example.com/es/de/de.html ,而不是 www.example.com/de/de.html

我做错了什么?

2 个答案:

答案 0 :(得分:0)

使用根相对URL。此网址以/开头。

实施例

<a href="/de/de.html">

或在href

中使用您的域名
<a href="http://www.example.com/de/de.html">

答案 1 :(得分:0)

这是一个经典错误。您编写了一个相对链接(不是以/开头)。浏览器将其相对解释为当前页面URL。如果您位于顶级页面(紧靠/下方,一切正常,但只要当前网址更深(一个级别或更高级别),您就会得到:

/old_url_begin/new_url

您必须使用绝对网址:

echo "<a href='/".$language .'/'.$language.".html'>