我正在開發一個multilang站點。在傳遞給url的varible上生成的內容。關於我們頁面的例子我的網址是:domain.com/file.php?id=1我有一個主文件,並在該文件中查詢得到所選菜單的ID。php多lang站點乾淨的網址
如果更改語言,我的網址會變爲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。我的意思是:頁數是靜態的。用戶無法添加或刪除頁面。
這次因爲我在URL中傳遞了頁面ID,我嘗試了header("location: ".$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING']);
,但每次嘗試更改lang時都會出現重定向循環錯誤。
UPDATE
代碼選擇語言:在我session.php文件
<?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>
if (!isset($_SESSION["idLang"]))
$_SESSION["idLang"] = 'en';
if (@isset($_GET["lang"])){
$_SESSION["idLang"] = $_GET['lang'];
//header("location: ".$_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING']);
}
所以我的問題是,如果有反正我能得到我的網址清潔,隱藏lang變量?
感謝
如果你想要一個乾淨的網址,使用URL重寫。然後你可以有這樣的網址:'domain.com/en/file/1'。如果你想改變語言,你可以使用正則表達式來替換新的語言,同時保持路徑的其餘部分。 – 2013-04-30 15:08:48
你是如何構建這些網址的?只需*在當時替換* lang參數,而不是附加另一個參數。 – deceze 2013-04-30 15:09:20
@deceze我用附加代碼更新了帖子。 – peterK 2013-04-30 15:23:09