如何在重写规则中捕获URL的“子部分”?

时间:2010-05-10 22:46:05

标签: .htaccess mod-rewrite query-string

我知道标题有点奇怪,但这是URL的样子:

/user/xxx/page
/user/xxx/page?error=yyy

第一个URL的规则如下所示:

RewriteRule ^user/(\d+)/page$    something.pl?id=$1 [L]

为了使其与第二个URL一起使用,它变为:

RewriteRule ^user/(\d+)/page(error=\d+)?$    something.pl?id=$1 [L]

我的问题是......如何捕获错误编号?我尝试了这两个:

RewriteRule ^user/(\d+)/page(error=(\d+))?$    something.pl?id=$1&error=$2 [L]
RewriteRule ^user/(\d+)/page(error=(\d+))?$    something.pl?id=$1&error=$3 [L]

但它不起作用......

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您只需使用 QSA 标志即可将原始查询附加到新的查询中:

RewriteRule ^user/(\d+)/page$    something.pl?id=$1 [L,QSA]

现在,/user/xxx/page?error=yyy的请求将被重写为/something.pl?id=xxx&error=yyy