Appendix E

Migration of Apache mod_rewrite Rules to Advanced Policies

263

The following examples redirect requests to the home directory.

Apache mod_rewrite solution for structured home directories

RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3

NetScaler solution for structured home directories

add rewrite action act1 replace 'HTTP.REQ.URL' '"/home/"+ HTTP.REQ.URL.AFTER_STR("~").PREFIX(1)+"/"+ HTTP.REQ.URL.AFTER_STR("~").BEFORE_STR("/")+"/

.www"+HTTP.REQ.URL.SKIP(\'/\',1)' -bypassSafetyCheck yes

add rewrite policy pol1 'HTTP.REQ.URL.PATH.STARTSWITH("/~")' act1

bind rewrite global pol1 100

Redirecting Invalid URLs to Other Web Servers

If a URL is not valid, it should be redirected to another Web server. For example, you should redirect to another Web server if a file that is named in a URL does not exist on the server that is named in the URL.

On Apache, you can perform this check using mod_rewrite. On the NetScaler, an HTTP callout can check for a file on a server by running a script on the server. In the following NetScaler examples, a script named file_check.cgi processes the URL and uses this information to check for the presence of the target file on the server. The script returns TRUE or FALSE, and the NetScaler uses the value that the script returns to validate the policy.

In addition to performing the redirection, the NetScaler can add custom headers or, as in the second NetScaler example, it can add text in the response body.

Apache mod_rewrite solution for redirection if a URL is wrong

RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f

RewriteRule

^(.+)

http://webserverB.com/$1 [R]

NetScaler solution for redirection if a URL is wrong (method 1)

add HTTPCallout Call

set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/ file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")

add responder action act1 redirect '"http:// webserverB.com"+HTTP.REQ.URL' -bypassSafetyCheck yes

Page 277
Image 277
Citrix Systems 9.2 Redirecting Invalid URLs to Other Web Servers, 263, NetScaler solution for structured home directories