Apache mod_重写、清理URL并获取参数

Apache mod_重写、清理URL并获取参数,apache,.htaccess,mod-rewrite,parameters,get,Apache,.htaccess,Mod Rewrite,Parameters,Get,首先,我要向大家道歉——我搜索了几十个问题,但我仍然完全不知所措(在一家非营利机构自学,对PHP的了解有限) 我有一个这样的URLhttp://www.welcomedesk.org/index.php?lang=en&page=home (所有链接重定向到index.php) 我希望它像http://www.welcomedesk.org/en/home 我有一个mod_重写: 重新启动发动机 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{

首先,我要向大家道歉——我搜索了几十个问题,但我仍然完全不知所措(在一家非营利机构自学,对PHP的了解有限)

我有一个这样的URL
http://www.welcomedesk.org/index.php?lang=en&page=home
(所有链接重定向到index.php)

我希望它像
http://www.welcomedesk.org/en/home

我有一个mod_重写: 重新启动发动机

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;
}
函数redoUrl($addvalues=array()) { $query='?'; $keysnew=数组_键($addvalues); $myget=$\u GET; 对于($i=0;$i 我需要更改此功能吗?我需要手工重写我所有的链接吗


此外,文件名为
$page_$lang.inc.php
并插入以填充内容,所有内容都位于主文件夹中,但当我访问
/en/home
时,它假定新文件夹为/en/,并且不再找到任何内容。mod_rewrite似乎忘记了/en/是一个GET参数,只是丢失了它。

是的,您需要更改它,以便它不使用
$query
。比如:

$uri='';
$keysnew=数组_键($addvalues);
$myget=$\u GET;
对于($i=0;$i
@user3119486尝试删除
基本名称($\u SERVER['PHP\u SELF'])。
部分
$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;
}