Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I need to rewrite to another host, unless the url starts with /store or /utils

I have tried looking at the apache docs, but I can't work out how to do this

share|improve this question

3 Answers 3

up vote 4 down vote accepted

Ok assuming you want to redirect to a host otherhost.example.com this should do the trick under Apache.

RewriteCond %{REQUEST_URI}    !^/(store|utils)/.*
RewriteRule (.*)    http://otherhost.example.com$1 [R=301,L]

The conditional part says "if the request URI doesn't begin with /store/ or /utils/ apply the Rewrite. The rewrite rule will then generate a 301 redirect with the captured URI appended to the request.

share|improve this answer
    
Kudos for actually specifying R=301 too –  Frenchie Feb 11 '10 at 3:11
    
Thanks! Kind of obvious now I see the config! –  aussiegeek Feb 11 '10 at 3:34

As ickymettle succintly responded, the ! flag signifies it should consider the input as matched if the conditions of the rule are NOT met. So, breaking down the syntax:

! = 'Not' prefix
^ = start of string
/ = The first forward slash tells the rule to match only if the input string
    begins with a /
| = the pipe symbol denotes 'or' inside the bracketed group section
    (as in 'store or utils')
    The second forward slash denotes that the string ends with a forward slash
. = any single character
* = zero or more of the preceding character (so .* = 0 or more of any character, effectively passing on the rest of the URI

The AddedBytes.com mod_rewrite cheatsheet is dead handy, I have it taped to the wall next to where I sit (as I dive into htaccesses almost daily and desperately try to teach myself mod_rewrite voodoo!) There's also a [great detailed article on PerishablePress with loads of tips, tricks etc. The one nice thing about mod_rewrite is that it isn't deprecated with new releases constantly, so old articles on the topic remain perfectly valid :-)

Might as well go for broke and also mention [the mod_rewrite / .htaccess cheatsheet on TheJackol, which has some useful quick code snippets and a few bits of info.

Other URLs:

  • perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
  • thejackol.com/htaccess-cheatsheet/

Sorry I couldn't hyperlink them, I don't have 10 Rep points yet so the system blocked me from hyperlinking all three :-(

share|improve this answer
RewriteCond URL (?!.*/utils).*
RewriteCond URL (?!.*/store).*
RewriteRule (.*) http\://{your new host here}/$3 [I,R]

Note: This is the syntax for ISAPI_Rewrite, which should be compatible with mod-rewrite.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.