Wow! Thank you Massimo. Just now I was having that problem. On Mon, Oct 18, 2010 at 9:01 AM, Tom Atkins <minkto...@gmail.com> wrote:
> Fantastic - thanks Massimo. That is extremely useful - my regex skills are > pretty poor but this really helps with getting to grips with routes.py. > > Love the 'tips of the day' - keep 'em coming! > > > On 18 October 2010 03:07, mdipierro <mdipie...@cs.depaul.edu> wrote: > >> 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 >> > >