I have been reading through via a previous solution to some recursive mod_rewrite problem that's much like what I am attempting to do, the main difference is I am delivering all queries with an index.php file and thus don't have to specify the script inside the query.

Basically I wish to recursively convert a variety of parameters inside a internet search engine friendly url:

example.com/param1/val1/param2/val2/...

to some regular query string:

example.com/index.php?param1=val1&param2=val2&...

To date I have been not successful in during my attempts though:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^([^/]+)/([^/]+) $1=$2&%1 [L]
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)$ index.php?%1 [L]

Would anybody have the ability to offer any suggestions?

yes...

Obtained from the good examples here:

http://iirf.codeplex.com/sourcecontrol/changeset/view/62027?projectName=IIRF#981491

This ruleset iteratively translates a set of URL path segments to some querystring n=v segment.

# handle case with no query string.  This rule fires the first time through,
# and converts the first pair of URL path segments to a n=v query string segment.  
RewriteRule ^/(?!index\.php)([^\?\/]+)/([^\?\/]+)/([^\?]+)$ /$3?$1=$2

# handle the case where there is an existing query string, and more than one pair of 
# URL path segments remaining. This rule fires potentially multiple times.
RewriteRule ^/(?!index\.php)([^\?\/]+)/([^\?\/]+)/([^\?]+)\?(.+)$ /$3?$4&$1=$2


# Handle the case with a query string, and exactly one pair of URL path segments. 
# This fires once (last).
# It fires when there is an even number of segments. 
RewriteRule ^/(?!index\.php)([^\?\/]+)/([^\?\/]+)\?([^\?]+)$ /help.cfm?$3&$1=$2  [L]

# Handle the case with no query string, and exactly one pair of URL path segments. 
# This fires once (last).
RewriteRule ^/(?!index\.php)([^\?\/]+)/([^\?\/]+)$ /help.cfm?$1=$2  [L]


# Handle the edge case, where there is an odd number of segments, which is invalid
# for these purposes. 
#
# This fires once, after all the other pairs have been parsed.  In fact the filter
# cannot know that there is an odd number of segments until it does all the matching.
# So at the end we see, we have one left over segment, and we 
# redirect to a 404 page.

RewriteRule ^/(?!index\.php)([^\/\?]+)\?([^\?]+)$ /ResourceNotFound.php  [L]

# Handle the edge case where there is only one segment. This is also an error
# in this ruleset.
RewriteRule ^/(?!index\.php)([^\/\?]+)$ /FoundOnlyOneSegment.php  [L]

This ruleset is probably not exactly what you would like however it demonstrates the approach. It wasn't produced for mod_rewrite, however for IIRFThat is a rewriter for IIS. However the syntax ought to be the same for mod_rewrite, so these rules must work.

I'm not sure if mod_rewrite includes a logging facility, or perhaps a command-line test capacity, but IIRF does, which causes it to be simpler to determine how individual rules work, or even the results of teams of rules.

IIRF comes with an iteration limit that defaults to 10. There's a method to raise to limit to 30, that is pretty high, but nonetheless not infinite. Which means it will not work with "a variety of parameters". It may convert as much as 15 pairs of params. I'm not sure if mod_rewrite includes a similar limit.

I replicated the answer from that other question and modified it such as this:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*/)?([^/]+)/([^/]+) $1?$2=$3&%1 [L]
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^.*$ index.php?%1 [L]

It will nearly exactly the same factor, except within the first rule, the very first match is optional as well as in the 2nd rule, the match is on whatever remains in the end another pairs are matched up.

To have an odd quantity of parameters, the very first parameter is overlooked.

One note, should you have a much lots of parameters, you might want to change some configurations.

Add something similar to this for your .htaccess file

RewriteOptions MaxRedirects=20

then one such as this for your apache conf file

LimitInternalRecursion 20

Rather than "20" pick whatever quantity of recursions (pairs) you have to allow (the default is 10).