Может ли mod_rewrite конвертировать любое количество параметров с любыми именами? - PullRequest
0 голосов
/ 19 мая 2009

Я всего n00b на mod_rewrite, и то, что я пытаюсь сделать, звучит просто:

вместо того, чтобы иметь domain.com/script.php?a=1&b=2&c=3 я хотел бы иметь:

domain.com / скрипт | а: 1, б: 2; с: 3

Проблема в том, что мой сценарий принимает большое количество параметров в различных комбинациях, и порядок не важен, поэтому невозможно кодировать каждый из них в выражении и ожидать определенного порядка. Так можно ли установить правило, которое просто передает все параметры в сценарий, независимо от порядка или количества параметров? Так что если кто-то наберет

domain.com / script | a: 1; b: 2; j: 7 он передаст все эти параметры и значения точно так же, как это было бы с domain.com/script|b:2;a:1; ?

Спасибо!

1 Ответ

3 голосов
/ 19 мая 2009

Я бы использовал PHP для разбора запрошенного пути URL:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$params = array();
foreach (explode(',', substr($_SERVER['REQUEST_URI_PATH'], 6)) as $param) {
    if (preg_match('/^([^:]+):?(.*)$/', $param, $match)) {
        $param[rawurldecode($match[1])] = rawurldecode($match[2]);
    }
}
var_dump($params);

И правило mod_rewrite для перезаписи таких запросов в ваш /script.php файл:

RewriteRule ^script\|.+ script.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...