Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1730
  • Last Modified:

mod-rewrite - Can I use a RewriteCond backreference in the PATTERN for the subsequent RewriteRule

While this works as I'd expect (rewrites http://www.whatever.com/BLAH to http://www.whatever.com/test.php):

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/BLAH/ [NC]
RewriteRule ^BLAH/$ test.php [NC,L]

, I was half expecting this to work (both http://www.whatever.com/BLAH and http://www.whatever.com/SCHMLAH being rewritten to http://www.whatever.com/test.php):

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/(BLAH|SCHMLAH)/ [NC]
RewriteRule ^%1/$ test.php [NC,L]

I have tested that the backreference from the RewriteCond contains a value by tracing it in the substitution of the RewriteRule. It seems that i cannot use a backreference from a RewriteCond in the PATTERN of the RewriteRule.

Is this the case or am I doing something wrong?

Cheers
0
mikely
Asked:
mikely
1 Solution
 
sleep_furiouslyCommented:
You are correct that you can't do that.

Let's establish some baseline terms:

RewriteCond TestString CondPattern
RewriteRule Pattern Substitution

According to the reference:
Using parentheses in 'Pattern' or in one of the 'CondPatterns' causes back-references to be internally created. These can later be referenced ... for creating the 'Substitution' and 'TestString' strings.

There's a diagram in the reference showing what backreferences are available at which points in the processing:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#InternalBackRefs

The red arrow in the lower right shows the bit related to your inquiry.  The backreference from the CondPattern is available in the Substitution, but not the Pattern.

0
 
RWJDComCommented:
I just found a real nice mod_rewrite cheat sheet that is real helpful when you are writing rules and conditions.  You can download it from http://www.ilovejackdaniels.com/apache/mod_rewrite-cheat-sheet/

I hope that Cheat Sheet can help you as much as it has helped me out.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now