Это можно сделать с помощью модуля Apache mod_rewrite , например:
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]