php多语言站点清理url

php多语言站点清理url,php,url,global-variables,clean-urls,Php,Url,Global Variables,Clean Urls,我正在开发一个多语言网站。在传入url的变量上生成的内容。例如关于我们的页面我的url是:domain.com/file.php?id=1我得到一个主文件,在该文件中查询得到所选菜单的id 如果我更改语言,我的url将变为domain.com/file.php?id=1&lang=en。每次我更改语言时,我的url都会添加一个类似这样的语言:domain.com/file.php?id=1&lang=en&lang=fr&lang=de&lang=en 在另一个multilang项目中,我使用了

我正在开发一个多语言网站。在传入url的变量上生成的内容。例如关于我们的页面我的url是:domain.com/file.php?id=1我得到一个主文件,在该文件中查询得到所选菜单的id

如果我更改语言,我的url将变为domain.com/file.php?id=1&lang=en。每次我更改语言时,我的url都会添加一个类似这样的语言:domain.com/file.php?id=1&lang=en&lang=fr&lang=de&lang=en

在另一个multilang项目中,我使用了以下内容:
标题(“位置:“.$\u服务器['SCRIPT\u NAME'])但它是动态性较差的页面。比如:domains.com/aboutus.php。我的意思是:页数是静态的。用户无法添加或删除页面

这一次是因为我在url中传递了页面id,我尝试了
标题(“位置:“..$\u SERVER['SCRIPT\u NAME']”.?”..$\u SERVER['QUERY\u 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>
所以我的问题是,是否有任何方法可以让我的url更干净,隐藏lang变量


感谢您动态生成查询参数,替换当前URL中的现有参数:

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

如果您想要一个干净的url,请使用url重写。然后,您可以有这样一个url:
domain.com/en/file/1
。如果您想更改语言,可以使用正则表达式用新语言替换en,同时保留路径的其余部分。您如何构建这些URL?此时只需替换
lang
参数,而不是附加另一个参数。@deceze我用附加代码更新了帖子。
<a href="...?<?php echo http_build_query(array('lang' => 'foo') + $_GET); ?>">