htaccess重写参数,结转一个值

时间:2014-12-10 10:59:04

标签: regex apache .htaccess mod-rewrite redirect

您好我曾尝试使用碎片拼凑完整的工作重写但不是很远。

我有数千页,例如/ parts /?page = 100我想转发到/ parts / page / 100 / 但它变得复杂,因为页面参数可能不是第一个,我也希望剥离所有其他参数信息,例如它应该更改以下

/parts/?page=100/            ->   /parts/page/100/
/parts/?xyz=1&page=100/      ->   /parts/page/100/
/parts/?xy=1&z=1&page=100/   ->   /parts/page/100/
/parts/?xy=1&page=100&z=1/   ->   /parts/page/100/

到目前为止,我已经使用此代码,但仅适用于上面列表中的顶行。

RewriteCond %{QUERY_STRING} ^page=(.*)$
RewriteRule ^parts /parts/page/%1? [NC,R,L]

哪些重写规则适用于上述所有示例?

1 个答案:

答案 0 :(得分:0)

您可以使用:

RewriteCond %{QUERY_STRING} (?:^|&)page=([^&]+) [NC]
RewriteRule ^parts/?$ /parts/page/%1? [NC,R,L]

使用(?:^|&)模式可以在查询字符串中的任何位置读取参数page