首先,我想大声道歉 - 我搜索了几十个问题而且我仍然处于完全亏损状态(自学者处于非盈利状态且对PHP知识有限)。
我有这样的网址http://www.welcomedesk.org/index.php?lang=en&page=home
(所有链接都重定向到index.php)
我希望它显示为http://www.welcomedesk.org/en/home
我有一个mod_rewrite: RewriteEngine On
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 :(得分: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;
}