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 paramet
One solution might be to use the same regex, without captures, and pass the request to index.php
Then use index.php to explode the Request URI by the forward slashes and you can work from there with the data.
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:
Yours: Mine: ------------------------- --------------------------- ^([^/]+)/b $1 ^([^/]+)/b $1 ([0-9]+) $2 ([0-9]+) $2 (/a([0-9]+))? $4 (?:/a([0-9]+))? $3 (/v([0-9]+))? $6 (?:/v([0-9]+))? $4 (,([0-9]+))? $8 (?:,([0-9]+))? $5 (/(ajax|share))? $10! (?:/(ajax|share))? $6 (,complete)?$ $11! (,complete)?$ $7
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.
One, although pretty dumb, idea would be to do the rewrite in two steps, that is, chain two RewriteRule
s with the first rule rewriting it into some intermediate format.