Happy to say this is now working. One thing I was wondering is if the
application specific url rewriting could route at the root level or not
(e.g. route www.example.com/someapp/default/contat to
www.example.com/contact) or if it was limited to having an app prefix (e.g.
only route www.example.com/someapp/default/contact to
www.example.com/someapp/contact). Well I can confirm that it does not need
an app prefix.
Here's what I put in <web2py-root>/routes.py assuming my app's name is
"someapp":
# -*- coding: utf-8 -*-
# default_application, default_controller, default_function
# are used when the respective element is missing from the
# (possibly rewritten) incoming URL
#
default_application = 'someapp' # ordinarily set in base routes.py
default_controller = 'default' # ordinarily set in app-specific routes.py
default_function = 'index' # ordinarily set in app-specific routes.py
# routes_app is a tuple of tuples. The first item in each is a regexp that
will
# be used to match the incoming request URL. The second item in the tuple is
# an applicationname. This mechanism allows you to specify the use of an
# app-specific routes.py. This entry is meaningful only in the base
routes.py.
#
# Example: support welcome, admin, app and myapp, with myapp the default:
routes_app = ((r'/(?P<app>welcome|admin|app|someapp)\b.*', r'\g<app>'),
(r'(.*)', r'someapp'),
(r'/?(.*)', r'someapp'))
other than that I left routes_in and routes_out alone.
Then in my <web2py-root>/applications/someapp/routes.py I put:
default_controller = 'default' # ordinarily set in app-specific routes.py
default_function = 'index' # ordinarily set in app-specific routes.py
BASE = '' # optonal prefix for incoming URLs
routes_in = (
('/(?P<function>about|contact)', r'/someapp/default/\g<function>'),
# remove the BASE prefix
(BASE + '/$anything', '/$anything'),
)
routes_out = (
(r'/$app/default/index', '/'),
(r'/$app/default/$anything', '/$anything'),
# restore the BASE prefix
('/$anything', BASE + '/$anything'),
)
routes_onerror = [
(r'*/*', r'/someapp/default/handle_error')
]
Not yet sure if the BASE stuff is necessary. Also can confirm error
routing works in the app specific routes.py with no error routes specified
in the main routing file.
Note when I tried using the $app variable in routes_in as shown below it
seemed to give a Rocket error
routes_in = (
('/(?P<function>about|contact)', r'/$app/default/\g<function>'),
# remove the BASE prefix
(BASE + '/$anything', '/$anything'),
)
I prefer the app specific routing because it makes it easy to version
control your app's routes with your app's repository.
On Tuesday, January 28, 2014 11:25:07 PM UTC-5, User wrote:
> My <web2py-root>/routes.py currently has:
> # -*- coding: utf-8 -*-
>
>
>
> # default_application, default_controller, default_function
> # are used when the respective element is missing from the
> # (possibly rewritten) incoming URL
> #
> default_application = 'init' # ordinarily set in base routes.py
> default_controller = 'default' # ordinarily set in app-specific routes.py
> default_function = 'index' # ordinarily set in app-specific routes.py
>
> # routes_app is a tuple of tuples. The first item in each is a regexp
> that will
> # be used to match the incoming request URL. The second item in the tuple
> is
> # an applicationname. This mechanism allows you to specify the use of an
> # app-specific routes.py. This entry is meaningful only in the base
> routes.py.
> #
> # Example: support welcome, admin, app and myapp, with myapp the default:
>
> routes_app = ((r'/(?P<app>welcome|admin|app)\b.*', r'\g<app>'),
> (r'(.*)', r'myapp'),
> (r'/?(.*)', r'myapp'))
>
> ...
>
> For a basic example of routing www.example.com/someapp/default/contact to
> www.example.com/contact what needs to go in the <web2py-root>/routes.py
> and what needs to go in the <web2py-root>/applications/someapp/routes.py?
>
> If I'm using application specific routing does this mean I should leave
> routes_in and routes_out completely alone in <web2py-root>/routes.py?
>
> Also for specifying errors, do I use routes_onerror in
> <web2py-root>/routes.py or <web2py-root>/applications/someapp/routes.py?
>
>
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.