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
>>
>
>

Reply via email to