在htaccess中重写规则问题

时间:2014-08-16 09:16:00

标签: regex .htaccess mod-rewrite url-rewriting rewrite

我有以下规则正在运作

RewriteRule ^(.+?)/(step)/([0-9]+)/(id)/([0-9]+)/(start)/([0-9]+)/(end)/
([0-9]+)/?$ index.php?url=$1&$2=$3&$4=$5&$6=$7&$8=$9 [NC,L,QSA]

现在我想在字符串末尾添加另一个参数(ansid),所以我按照以下方式添加,但由于某种原因它没有拿起ansid。

RewriteRule ^(.+?)/(step)/([0-9]+)/(id)/([0-9]+)/(start)/([0-9]+)/(end)
/([0-9]+)/(ansid)/([0-9]+)/?$ index.php?url=$1&$2=$3&$4=$5&$6=$7&$8=$9&$10=$11 
[NC,L,QSA]

1 个答案:

答案 0 :(得分:1)

$10$11因为Apache mod_rewrite manual而无法工作:

RewriteRule反向引用:
这些是$ N形式的反向引用(0 <= N <= 9)。 $ 1到$ 9可以从RewriteRule访问模式的分组部分(括号中),RewriteRule受当前RewriteCond条件集的约束。 $ 0提供对该模式匹配的整个字符串的访问。

您需要重构规则,以便在$9之前使用反向引用 您的规则可能会被重写为:

RewriteRule ^(.+?)/(step)/([0-9]+)/(id)/([0-9]+)/(start)/([0-9]+)/end/([0-9]+)/ansid/([0-9]+)/?$ index.php?url=$1&$2=$3&$4=$5&$6=$7&end=$8&$ansid=$9 [NC,L,QSA]