Forum Discussion

fcicala_29180's avatar
fcicala_29180
Icon for Nimbostratus rankNimbostratus
Jan 14, 2010

http to https redirect with exceptions

Hello I am very new to iRules and just inherited a farm of 9.x F5.

 

I see that my predecessor is performing this task using the following iRule:

 

 

 

when HTTP_RESPONSE {

 

if { [HTTP::header Content-Type] starts_with "text/" }{

 

STREAM::expression "@http:@https:@"

 

STREAM::enable

 

} else {

 

STREAM::disable

 

}

 

}

 

 

I read about it and if I get it right this rules replaces everything that has the word HTTP with HTTPS?

 

 

The actual requirement I was given a few days ago is to replace links that contain HTTP with HTTPS if the link contains a specific word in it.

 

Can this be somehow achieved?

6 Replies

  • The same type of Irule can be applied. It all depends on what what you are looking to replace. IS the specific word part of a link?

     

     

     

    Bhattman
  • Yes it is part of a link.

     

    How do you implement it then?

     

    Lets assume I want to rewrite everything that contains/not contains a certain string?
  • Then you should be able to do the following

     
     when HTTP_RESPONSE { 
     if { [HTTP::header Content-Type] starts_with "text/" }{ 
     STREAM::expression "@http:\\somedomain.com\word@https:\\someotherdomain.com\word@" 
     STREAM::enable 
     } else { 
     STREAM::disable 
     } 
     }  
     

    Bhattman
  • Hi,

     

     

    That iRule is using a stream profile to replace instances of http: with https: in text-type response content. If you need to make it more specific, you can possibly use a regex or the STREAM_MATCHED and STREAM::match command.

     

     

    If you'd like more detailed suggestions can you post a few examples of links you do and don't want rewritten?

     

     

    Here are a few wiki pages with examples:

     

     

    You might be able to tweak the find string of http: using a regex

     

    http://devcentral.f5.com/Wiki/default.aspx/iRules/STREAM__expression.html

     

     

    Or you could use the existing stream expression, but then add logic to the STREAM_MATCHED event to only rewrite the specific matches you want to using STREAM::replace.

     

     

    http://devcentral.f5.com/Wiki/default.aspx/iRules/STREAM_MATCHED

     

    http://devcentral.f5.com/Wiki/default.aspx/iRules/STREAM__replace

     

     

    Aaron
  • It would be nice to get to update the post from within an email.

     

     

    CB