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 <[email protected]> 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',
>> ),
>> )
>>
>> --
--