Forum Discussion

javier_diaz_379's avatar
javier_diaz_379
Icon for Nimbostratus rankNimbostratus
May 04, 2011

Rewrite URL

I want to accomplish the following:

 

Currently the web page we're serving both www. and non www.

 

I need a permanent redirect, so when a user requests the non www. version of the webpage it redirect to www.version

 

Thanks

 

 

 

 

3 Replies

  • Hi Javier,

    Here is an iRule you can use to send a 301 redirect to the same host and URI with www. prepended:

    
    when HTTP_REQUEST {
    
        Check if Host header value has at least one alpha character and doesn't already start with www.
       if {[string match {[a-zA-Z]} [HTTP::host]] and not ([string tolower [HTTP::host]] starts_with "www."}{
    
           Send a 301 redirect to the same host and URI with www. prepended
          HTTP::respond 301 Location "http://www.[HTTP::host][HTTP::uri]"
       }
    }
    

    If you are using this on an HTTPS VS and you don't have a cert valid for both example.com and www.example.com, the client will get a mismatched cert warning before the iRule triggers.

    Aaron
  • You didn't specify the Protocol, so here is an example of an iRule that you could use on an HTTP Virtual Server to redirect to HTTPS and add a WWW if needed:

    
    when HTTP_REQUEST {
       if {[HTTP::host] starts_with "www."} {
          HTTP::redirect "https://[HTTP::host][HTTP::uri]"
       } else {
          HTTP::redirect "https://www.[HTTP::host][HTTP::uri]"
       }
    }