0

我正在尝试以下重写

1. http://domain.cm/app/user/view?group=3&userid=34 to http://domain.cm/app/user/view/group/3/userid/34

2. http://domain.com/app/class/edit?classid=13 to http://domain.com/app/class/edit/classid/13

这可以通过一个规则来实现吗?我有很多这样的 URL 需要重写,并且为每个创建一个规则看起来非常多余。

4

2 回答 2

0

你可以尝试这样的事情,虽然它可能有点太急于匹配任何东西

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^app/([^/]+)/([^/]+)/([^/]+)/([^/]+)/(?:([^/]+)/|)(?:([^/]+)/?|)$ /app/$1/$2?$3=$4&$5=$6 [L,QSA]

如果您要求以下内容,那就是这样:

http://domain.com/app/class/edit/classid/13

您将在以下位置获得内容

/app/class/edit?classid=13

它可以处理多达 6 个路径节点,因此:

http://domain.com/app/a/1/b/2/c/3

将被路由到:

/app/a/1?b=2&c=3

更重要的是,只需在规则目标末尾的the和 a(?:([^/]+)/|)(?:([^/]+)/?|)之前添加另一个。$&$7=$8

于 2013-10-01T21:06:28.383 回答
0

不,您需要单独的规则(至少对于您提供的示例)。

于 2013-10-01T21:00:10.693 回答