我正在为包含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
我做错了什么?
答案 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'>