Forum Discussion

Joe_Pipitone's avatar
Joe_Pipitone
Icon for Nimbostratus rankNimbostratus
Mar 02, 2011

Regex

I've been requested to perform a rewrite / redirect which does the following:

 

 

http://subdomain.ourcompany.com/webext/01.aspx?status=error (pass the 01 over to the url below and say id=thatNumber)

 

 

needs to rewrite to

 

 

http://subdomain.ourcompany.com/post/post.ashx?id=01&status=error

 

 

I'm trying to make sure I'm going in the right direction here by using regex to analyze the URI, however the 01.aspx will be a different number, it will not always come from the application that way.

 

 

The web application may spit out a different error number such as 45.aspx or 123.aspx. The web application increments this number based on the number of errors received within the application, so there's a possibility that we will get into triple, 4, 5, 6 digits in the future.

 

 

The only thing that changes in the uri is this number. The ?status=error needs to be appended and the number moved over to result in something like:

 

 

http://subdomain.ourcompany.com/post/post.ashx?id=01&status=error

 

 

I found this iRule - can I use this or something similar to increment using \d+ to say one or more digits within the regex?

 

 

Or a string match?

 

 

string match -nocase {[0-9999][[0-9999]}

 

 

Thanks for any help - I'm unsure how to move forward.

 

 

elseif {[HTTP::host] == "subdomain.ourcompany.com" } { if { [HTTP::uri] contains "/webext/\d+.aspx?status=error"} {

 

set urivar

 

if { ! ( $urivar matches_regex ^.*?

 

\/webext\/\d+\[a-zA-Z0-9]) } {

 

rewrite here

 

}

 

else {

 

pool something else

 

}

 

}

 

 

13 Replies