Routes Optional Values

I'm trying to my a url that has optional (and not optional values)

for example

http://myserver/store/cats/a/b/c

A and C are optional where the following are valid

http://myserver/store/cats/a/b/c http://myserver/store/cats//b/c http://myserver/store/cats/a/b http://myserver/store/cats//b

And the following is invalid

http://myserver/store/cats/a//c

I know the last value can be optional by including ,:c=>nil But the only way I can think of for middle values to be optional is to have all permutations written out.

for example map.connect ':store/:cats/:a/:b/:c, :c=> nil map.connect ':store/:cats//:b/:c, :a=> nil, :c=> nil

For a couple of variables this is fine, but moving to 3 or more, and it gets nuts fast.

Is there an easier way to handle this?

Dont' know if it's any easier, but it's a cleaner route...

map.connect ":store/:cats/*args",....

Then in the action that handles the above route, you'll have params[:args] as an array and can do whatever you want with it redirecting to an error (or 404, etc.) page if it isn't what you want.

-philip