I put the script in trunk under scripts/autoroutes.py to use it cp scripts/autoroutes.py routes.py
then edit routes.conf as explained below: On Oct 17, 9:03 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > Replace your web2py/routes.py with this: > > ------------- begin routes.py----------- > try: config=open('routes.conf','r').read() > except: config='' > def auto_in(apps): > routes=[ > ('/robots.txt','/welcome/static/robots.txt'), > ('/favicon.ico','/welcome/static/favicon.ico'), > ('/admin$a','/admin$a'), > ] > for a,b in [x.strip().split() for x in apps.split('\n') \ > if x.strip() and not x.strip().startswith('#')]: > if not b.startswith('/'): b='/'+b > if b.endswith('/'): b=b[:-1] > app = b.split('/')[1] > routes+=[ > ('.*:https?://(.*\.)?%s:$method /' % a,'%s' % b), > ('.*:https?://(.*\.)?%s:$method /static/$a' % a,'%s/static/ > $a' % app), > ('.*:https?://(.*\.)?%s:$method /appadmin/$a' % a,'%s/ > appadmin/$a' % app), > ('.*:https?://(.*\.)?%s:$method /$a' % a,'%s/$a' % b), > ] > return routes > > def auto_out(apps): > routes=[] > for a,b in [x.strip().split() for x in apps.split('\n') \ > if x.strip() and not x.strip().startswith('#')]: > if not b.startswith('/'): b='/'+b > if b.endswith('/'): b=b[:-1] > app = b.split('/')[1] > routes+=[ > ('%s/static/$a' % app,'static/$a'), > ('%s/appadmin/$a' % app, '/appadmin/$a'), > ('%s/$a' % b, '/$a'), > ] > return routes > > routes_in=auto_in(config) > routes_out=auto_out(config) > ------------------- END --------------- > > what does it do? It writes routes for you based on a simpler routing > configuration file called routes.conf. here is an example: > > ----- BEGIN routes.conf------- > 127.0.0.1 /examples/default > domain1.com /app1/default > domain2.com /app2/default > domain3.com /app3/default > ----- END ---------- > > It maps a domain (the left had side) into an app and it shortens the > URLs for the app, by removing the listed path prefix. That means > > http://domain1.com/indexwill be mapped into > /app1/default/indexhttp://domain2.com/indexwill be mapped into > /app2/default/index > > It is safe in that it preserves admin, appadmin, static files, > favicon.ico and robots.txt. > > http://domain1.com/favicon.icohttp://domain1.com/robots.txthttp://domain1.com/admin/... > /admin/...http://domain1.com/appadmin/... > /app1/appadmin/...http://domain1.com/static/... /app1/static/... > > and vice-versa. > > It does assume one app per domain. > > I think something like this should be default since lots of people > find routes.py hard to work with. > Comments? Suggestions? > > Massimo