2010-04-27 57 views

回答

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

增加: $ segments = explode('/ ',$段); 以及其他查询参数的迭代: $ _GET ['p'] = array_shift($ segments); 你提出的简单方法就像一个魅力。 谢谢。 – Blackbeard 2010-04-27 11:20:11

+0

@vbklv:啊,是的,忘了'爆炸'。 – Gumbo 2010-04-27 11:23:21