On Jun 22, 2012, at 7:06 AM, Alec Taylor wrote: > Just tried that, it's still prepending the URL with "default". > > E.g.: http://localhost/default/profile rather than http://localhost/profile
If you want the router to omit the default controller when you specify a non-default function, then you need to list your functions. routers = dict( BASE = dict( default_application = 'social', functions = ['index', 'profile', ... ], ), ) The functions list must be a complete list of the callable functions in the default controller. Otherwise, the router could ambiguously interpret http://localhost/profile as /myapp/default/index/profile. You can extend this functionality by defining functions as a dict of lists, where the dict keys are controller names. That allows dropping of functions in non-default controllers. The hazard of doing this is that the function list(s) really, really must be complete. > > On Fri, Jun 22, 2012 at 10:57 PM, Jonathan Lundell <jlund...@pobox.com> wrote: >> On Jun 22, 2012, at 3:08 AM, Alec Taylor wrote: >>> >>> My web2py\routes.py: >>> >>> routers = dict( BASE=dict( default_application='social', >>> default_controller='default', default_function='index' ) ) >>> myapps = ['social'] >>> routes_in = [ >>> ('/admin/$anything', '/admin/$anything'), >>> ] >>> for app in myapps: >>> routes_in += [ ('/%s/static/$anything' % app, >>> '/%s/static/$anything' % app), ('/%s/appadmin/$anything' % app, >>> '/%s/appadmin/$anything' % app), ('/%s/$anything' % app, >>> '/%s/default/$anything' % app) ] >>> routes_out = [(b, a) for (a, b) in routes_in] >>> >>> It correctly defaults the landing page to the 'social' app, but it >>> isn't removing 'default' from my URLs. >>> >>> (I got the above from >>> https://groups.google.com/forum/#!topic/web2py/QU71v2-GFaM) >>> >>> How can I remove 'default' from my URLs? >>> >>> Thanks for all suggestions, >> >> Don't mix the two routers. In particular, don't define routers if you're >> going to define routes_in/out. >> >> All you need is: >> >> routers = dict( >> BASE = dict( >> default_application = 'social', >> ), >> ) >> >> -- --