2013-12-19 108 views
1

首先我要道歉大汗 - 我搜索了幾十個問題,我還處於完全喪失(自學者在非營利的PHP知識有限)。mod_rewrite的,乾淨的URL和GET參數

我有這樣http://www.welcomedesk.org/index.php?lang=en&page=home 一個URL(所有鏈接重定向到index.php)

我想它顯示像http://www.welcomedesk.org/en/home

我有這樣的mod_rewrite的: RewriteEngine敘述在

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ index.php?lang=$1&page=$2 [L] 

它的工作!但我不知道我常用的菜單鏈接該怎麼辦?他們都受此功能:

function redoUrl($addvalues = array()) 
{ 
$query = '?'; 

$keysnew = array_keys($addvalues); 
$myget = $_GET; 

for ($i = 0; $i < count($addvalues); $i++) 
{ 
    $myget[$keysnew[$i]] = $addvalues[$keysnew[$i]]; 
} 

$keys = array_keys($myget); 
$i = 0; 
//echo('<pre>'.print_r($addvalues).'</pre>'); 

foreach($myget as $get_param) 
{ 
    if('' <>$get_param) 
    { 
     if ($query <> '?') { $query .= '&'; } 
     $query .= $keys[$i] . '=' . $get_param;  
    } 
    $i++; 
} 

return basename($_SERVER['PHP_SELF']).$query; 
} 

我是否需要更改此功能?我需要手工重寫所有我的鏈接?

此外,該文件被命名爲$page_$lang.inc.php並插入填充內容,一切都位於主文件夾,但是當我訪問/en/home它假定新的文件夾/ EN /不再發現任何東西。 mod_rewrite的似乎忘了/ EN /是一個GET參數,只是失去了它。

回答

0

是的,你需要的,所以它不使用$query去改變它。例如:

$uri = ''; 

$keysnew = array_keys($addvalues); 
$myget = $_GET; 

for ($i = 0; $i < count($addvalues); $i++) 
{ 
    $myget[$keysnew[$i]] = $addvalues[$keysnew[$i]]; 
} 

$keys = array_keys($myget); 
$i = 0; 
//echo('<pre>'.print_r($addvalues).'</pre>'); 

foreach($myget as $get_param) 
{ 
    if('' <>$get_param) 
    { 
     $uri = $uri . '/' . $get_param; 
    } 
    $i++; 
} 

return basename($_SERVER['PHP_SELF']).$uri; 
} 
+0

@ user3119486嘗試刪除'basename($ _ SERVER ['PHP_SELF'])。'part –