php多语言站点清理url
我正在开发一个多语言网站。在传入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项目中,我使用了以下内容: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项目中,我使用了
标题(“位置:“.$\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); ?>">