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',
>>    ),
>> )
>> 
>> --



-- 



Reply via email to