Apparently there is a limitation (9) on how many backreferences you can access in htaccess RewriteRules..
But we have a RewriteRule that requires more than 9 parameters, something like this:
RewriteRule ^([^/]+)/b([0-9]+)(/a([0-9]+))?(/v([0-9]+))?(,([0-9]+))?(/(ajax|share))?(,complete)?$ /index.php?control=sites&site=brands&control_file=version_select&name=$1&campaign_id=$2&answer=$4&page=$8&option=$10&video_id=$6&page_type=research [L]
So what happens when you try to access ‘$10’, is that it uses $1 and puts a 0 right next to it.
Has anybody been able to solve this problem, any alternative solutions or anything?
Thanks!
Actually, you don’t need to capture everything. Write non-capturing groups (introduced with
'?:') for the things you don’t want to reuse, this should give you some breathing space again. Compare:But with mod_rewrite alone, you can’t go higher than 9 back-references. If you need more, use an alternative – for example capturing only the most important parts in rewrite and do some string-processing with the rest of the URL in your app.