The main idea of a redirection is telling to the web client to go to another URL when the request URL matchs some rule.
For example, if you have URLs like
You probably would prefer URLs like:
The redir handler accepts three directives:
This directive uses PCRE (http://www.pcre.org) (Perl Compatible Regular Expressions) to make the substitution. The redirection will happen internally, hence the the internal URL in which the address is translated will be invisible for the client.
It works in the same way as the previous one, but in this case, it will redirect the connection to the new resource.
This specify the default rule which will be used if none of the previous Rewrite rules maches. It appends the requested URL to the end of url.
The internals redirections, using the Rewrite key word, are limited to work in the same virtual host. All the internal redirections will be processed in the original virtual host, which makes quite sense in terms of security.
In the case you do need the redirect some resource to another virtual host and/or domain, you will have to use an explicit redirection using the Show Rewrite key words.
This example will perform a hidden redirection:
Directory /photo { Handler redir { Rewrite "/(\d+)$" "http://example.com/inst/photogallery/viewphoto?photoid=$1" Rewrite "/(\d+)/cmts" "http://example.com/viewcomments?photoid=$1" Rewrite "/(\d+)/delete" "http://example.com/inst/photogallery/admin?photoid=$1&method=delete" URL http://example.com/notfound?url= } }
Some examples of translations:
Request | Internal translation |
/123 | http://example.com/inst/photogallery/viewphoto?photoid=123 |
/501/delete | http://example.com/inst/photogallery/admin?photoid=501&method=delete |
/something | http://example.com/notfound?url=something |
In the case you want to use an HTTP redirection, this is the right configuration entry:
Directory /photo { Handler redir { Show Rewrite "/(\d+)$" "http://example.com/inst/photogallery/viewphoto?photoid=$1" Show Rewrite "/(\d+)/cmts" "http://example.com/viewcomments?photoid=$" Show Rewrite "/(\d+)/delete" "http://example.com/inst/photogallery/admin?photoid=$1&method=delete" URL http://example.com/notfound?url= } }