我正在开发一个多语言网站。在 url 中传递的变量上生成的内容。关于我们页面的示例我的 url 是:domain.com/file.php?id=1 我有一个主文件,在该文件中查询获取所选菜单的 id。
如果我更改语言,我的网址将变为 domain.com/file.php?id=1&lang=en。每次我更改语言时,我的网址都会增加一个这样的语言:domain.com/file.php?id=1&lang=en&lang=fr&lang=de&lang=en.....
在其他多语言项目中,我使用了这个:header("location: ".$_SERVER['SCRIPT_NAME']);
但它的动态页面较少。像这样:domains.com/aboutus.php。我的意思是:页数是静态的。用户不能添加或删除页面。
这次是因为我在尝试的 url 中传递了页面 id,header("location: ".$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING']);
但是每次我尝试更改语言时都会出现重定向循环错误。
更新
选择语言的代码:
<?php $actual= $_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];?>
<div id="langContainer">
<span><a <?php if ($_SESSION['idLang']=='en') {echo"class='active'";}?> href="<?php echo $actual ?>&lang=en">EN</a></span>
<span><a <?php if ($_SESSION['idLang']=='fr') {echo"class='active'";}?> href="<?php echo $actual ?>&lang=fr">FR</a> </span>
<span><a <?php if ($_SESSION['idLang']=='es') {echo"class='active'";}?> href="<?php echo $actual ?>&lang=es">ES</a></span>
<span><a <?php if ($_SESSION['idLang']=='de') {echo"class='active'";}?> href="<?php echo $actual ?>&lang=de">DE</a></span>
</div>
在我的session.php
if (!isset($_SESSION["idLang"]) )
$_SESSION["idLang"] = 'en';
if (@isset($_GET["lang"])){
$_SESSION["idLang"] = $_GET['lang'];
//header("location: ".$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING']);
}
所以我的问题是,是否有办法让我的 url 更清晰,隐藏 lang 变量?
谢谢