web2py supports URL rerwite although this is not really recommended. You should really use Apache (or lighttpd) + modproxy (or modrewrite) for this purpose. Moreover rewriting web2py urls can break links in applications. So do not do it. Anyway if you really really want to ...
To use this feature just create a new file in web2py/ called routes.py and write something like this in it
routes_in=(
('^127\.0\.0\.1:/testme$','/examples/default/index'),
)
routes_out=(
('^/examples/default/index$','/testme'),
)
Now visiting http://127.0.0.1:8000/testme
will result in a call to http://127.0.0.1:8000/examples/default/index
and this will only work from 127.0.0.1. To the visitor, all links to the page itself will look like links to /testme
Routes_in consist of a list of 2-tuples. The first element of a tuple is a regular expression of the form
'^IP_ADDRESS:PATH$'
where IP_ADDRESS is a regex pattern that will match the remote address (".*" to catch them all) and PATH is a regex that matches the path in the requested URL. The second part of the tuple tells web2py how to rewrite the path for those requests that match both the remote address and the path patterns. Notice that "." has to be escaped since it has a special regex meaning.
The presence of an IP_ADDRESS pattern allows to rewrite URL differently depending on the remote address IP address and, for example, prevent a certain domain from accessing a certain application.
Rules are executed in order. If a request does not match any route in, the url is not rewritten and the request is sent to web2py.
Routes_out are used to rewrite the output of the URL(...) function.