2010-04-27 2 views
1

Как переписать URL, как:Как переписать URL-адрес для нескольких параметров запроса?

http://domain.com/class/method/parameter1/parameter2/.../parameterN

в

http://domain.com/index.php?c=class&m=method&p1=parameter1&...&pN=parameterN

Основная идея заключается в том, чтобы создать возможность использования неограниченного количества параметров запроса.

Спасибо.

ответ

3

Можно сделать это с Apache’s mod_rewrite module, как это:

RewriteRule ^/([^/]+/[^/]+)/([^/]+)(/.+)?$ /$1$3?p[]=$2 [N,QSA] 
RewriteRule ^/([^/]+)/([^/]+)$ /index.php?c=$1&m=$2 [L,QSA] 

Но это, несомненно, будет легче сделать это с помощью PHP:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = explode('/', trim($_SERVER['REQUEST_URI_PATH'], '/')); 
if (count($segments) >= 2) { 
    $_GET['class'] = array_shift($segments); 
    $_GET['m'] = array_shift($segments); 
    $_GET['p'] = $segments; 
} else { 
    // error 
} 

Тогда вам просто нужно одно единственное правило переписать запросы:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^index\.php$ index.php [L] 
+0

С добавлением: $ segment = explode ('/ ', $ сегменты); и некоторая итерация для остальных параметров запроса после: $ _GET ['p'] = array_shift ($ segment); простой метод, который вы предлагали, работал как шарм. Спасибо. – Blackbeard

+0

@vbklv: Ах да, забыл «взорваться». – Gumbo

Смежные вопросы