请帮我处理必须重定向到正确语言的php文件。 网站架构是 site.com/en site.com/fr
我的鳕鱼:
<?php
$sites = array(
"en" => "/en/index",
);
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (!in_array($lang, array_keys($sites))){
$lang = 'en';
}
// перенаправление на субдомен
header('Location: ' . $sites[$lang]);
?>
答案 0 :(得分:1)
您可以将包含相对于文档根目录的路径的$_SERVER['PHP_SELF']
变量附加到您的语言文件夹中。
如果您的路径为site.com/fr/file
,则此变量将包含/fr/file
。当您删除此部分的第一部分时,您将获得被调用脚本的“语言无关”路径,您可以将其附加到所需的语言目录。
如果您的路径如您所述,您可以尝试以下解决方案(未经测试!):
<?php
$sites = array(
"en" => "/en",
);
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if (!in_array($lang, array_keys($sites))){
$lang = 'en';
}
$path_to_script = substr($_SERVER['PHP_SELF'], 3);
header('Location: ' . $sites[$lang] . $path_to_script);
?>
编辑:澄清方法:
如果网站为site.com/fr/123/index.php
,则变量$path_to_script
将包含/123/index.php
,即没有主要语言目录的脚本目录。
然后,您可以将其附加到所需的语言目录并获取所需的路径:/en/123/index.php
答案 1 :(得分:0)
/en/index
应为/en/index.php
,除非您使用的是Apache的mod_rewrite(默认情况下不是)。请提供更多有关不起作用的详细信息,以便我们为您提供更多帮助。
编辑: 此外,您可以为用户提供选择语言的选项,因为可能未设置“HTTP_ACCEPT_LANGUAGE”。在这种情况下,唯一的选择是英语,这会限制你的公众。
有些人甚至推荐地理定位,但我发现添加一个带语言的下拉菜单就足够了。