php多语言网站清理网址

时间:2013-04-30 15:02:31

标签: php url global-variables clean-urls

我正在开发一个multilang网站。在传递url的varible上生成的内容。关于我们页面的例子我的网址是: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.....

在我使用过的其他multilang项目中:header("location: ".$_SERVER['SCRIPT_NAME']);但它的动态页面较少。像这样:domains.com/aboutus.php。我的意思是:页面数是静态的。用户无法添加或删除页面。

这一次,因为我在网址中传递了网址ID,我尝试header("location: ".$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING']);,但每次尝试更改lang时都会出现重定向周期错误。

更新

选择语言的代码:

<?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']);

}

所以我的问题是,无论如何,我可以让我的网址清理,隐藏lang变量?

由于

1 个答案:

答案 0 :(得分:0)

动态构建查询参数,替换当前网址中的退出

<a href="...?<?php echo http_build_query(array('lang' => 'foo') + $_GET); ?>">