RewriteRule help needed

Hi Guys!

I want to use something like the following, but it returns an error when I try:

RewriteRule browse-jobs/(.*)/(.*)/(.*)/(.*) directory.php?type=custom&region=$1&area=$2&job_type=$3&industry=$4 [NC,L]

My problem is that the 2nd, 3rd and 4th part might not always have values. However, the first part will always be matched.

Any ideas how to make it work?

Thanks.

Zaggs,

Yes, a series of optional atoms each embedded in the previous one.

I’ve got to dash now but will check back in a few hours.

Regards,

DK

Zaggs,

RewriteRule browse-jobs/(.*)(/(.*)(/(.*)(/(.*))?)?)?$ directory.php?type=custom&region=$1&area=$3&job_type=$5&industry=$7 [L]

Making each successively embedded atom optional is similar to optional arguments in PHP function definitions (except for the regex, of course). With this approach, region is a requirement then, to have job_type, you must have an area and to have industry, you must have a job_type.

Now that I’ve gone through all that for you, I believe:

  1. (.*) should be replaced by ([a-zA-Z]+) in each case (your keys don’t appear to contain digital values) and

  2. this may not be what you’re after as you may need an industry but not a job_type, you may need a job_type but not a region, etc.

The problem with your optional key-value pairings is that YOU are in control of the links which get handled by this mod_rewrite so you need to “fill any nulls” with something like an _ (anything your directory.php script can handle and treat as a null value). If this is the case, add a _ after the Z (in comment #1) and you’ll be set.

Regards,

DK