[web2py] Re: Need advice/help with url rewrite: multiple domains, multiple apps, two apps per domain
I've just figured it out. I wasn't thinking right. I realised that, instead of having each site accesing its panel through those kind of urls (site1.dev/panel, site2.dev/panel, etc), I could use subdomains like panel.site1.dev, panel.site2.dev, etc, and then the thing is as easy as editing routes.py with parameter-based routing system, like this: # -*- coding: utf-8 -*- routers = dict(\ BASE = dict(\ domains = {\ 'site1.dev':'site1', \ 'panel.site1.dev':'site1_panel', \ 'site2.dev':'site2', \ 'panel.site2.dev':'site2_panel', \ }, \ )\ ) El miércoles, 15 de abril de 2015, 10:00:35 (UTC-3), Lisandro escribió: I have multiple domains with multiple applications. I've gotten it to work using routes.py, with both approaches: parameter-based and pattern-based system. However, there's a couple of things that still I can't achieve. 1) Two applications per each domain In my case, each domain serves two applications: the main one, and a second one. I need the main one to be accessible through / url. And I need the second one to be accessible through an url that is different to the application name. To clarify: *http://site1.dev http://site1.dev* should serve *site1* app *http://site1.dev/panel http://site1.dev/panel* should serve *panel1* app *http://site2.dev http://site2.dev* should serve *site2* app *http://site2.dev/panel http://site2.dev/panel* should serve *panel2* app Notice that every domain should have the /panel url pointing to the corresponding application (panel1, panel2, etc). 2) Restrict access to specific application according the domain Whether is parameter-based or pattern-based system, all domains endup having access to all applications, for example, http://site1.dev/site2/ is showing site2 application. But I would like that the domain *site1.dev* can only access the applications site1 and panel1, and nothing else. What have I achieved so far? routes.py using parameter-based system - # -*- coding: utf-8 -*- routers = dict(BASE = dict(\ domains = {\ 'site1.dev':'site1', \ 'site2.dev':'site2', \ })) This approach is working, however I don't know how to make */panel* url to serve *panel1* application. Also, the problem of the point 2 remains: all domains can access all applications. routes.py using pattern-based system - # -*- coding: utf-8 -*- routes_in = ( ('.*http://site1.dev.* /*', '/site1'), ('.*http://site2.dev.* /*', '/site2')) In this case, in addition to the aforementioned problems, I see an error on every url that is not default/index. That is, http://site1.dev/ shows the default/index, but if I click, let's say, on the register url, the browser attempts to load site1.dev/site1/default/user/register but I receive an invalid function error. At this point, I'm a bit lost. I'm using nginx, and I asume all this could be done through nginx's rewrite module (however I would like to keep it inside web2py, for portability reasons). Also, I must say I've never worked with regular expressions, and in addition, as you can see, this scenario is a little bit different than the classic one-app-per-domain. So, I would really appreciate any advice or help on this. P/S: if someone feels sufficiently trained to resolve the situation, please contact me by private, I'm willing to spend some money to resolve this situation in a professional manner. -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[web2py] Re: Need advice/help with url rewrite: multiple domains, multiple apps, two apps per domain
Did you look into multi tenancy in web2py? You can use routes to map the domain into applications but do not use it to map domains. Use multi tenancy to have different domains map into different slices of the database with their own permissions. On Wednesday, 15 April 2015 08:00:35 UTC-5, Lisandro wrote: I have multiple domains with multiple applications. I've gotten it to work using routes.py, with both approaches: parameter-based and pattern-based system. However, there's a couple of things that still I can't achieve. 1) Two applications per each domain In my case, each domain serves two applications: the main one, and a second one. I need the main one to be accessible through / url. And I need the second one to be accessible through an url that is different to the application name. To clarify: *http://site1.dev http://site1.dev* should serve *site1* app *http://site1.dev/panel http://site1.dev/panel* should serve *panel1* app *http://site2.dev http://site2.dev* should serve *site2* app *http://site2.dev/panel http://site2.dev/panel* should serve *panel2* app Notice that every domain should have the /panel url pointing to the corresponding application (panel1, panel2, etc). 2) Restrict access to specific application according the domain Whether is parameter-based or pattern-based system, all domains endup having access to all applications, for example, http://site1.dev/site2/ is showing site2 application. But I would like that the domain *site1.dev* can only access the applications site1 and panel1, and nothing else. What have I achieved so far? routes.py using parameter-based system - # -*- coding: utf-8 -*- routers = dict(BASE = dict(\ domains = {\ 'site1.dev':'site1', \ 'site2.dev':'site2', \ })) This approach is working, however I don't know how to make */panel* url to serve *panel1* application. Also, the problem of the point 2 remains: all domains can access all applications. routes.py using pattern-based system - # -*- coding: utf-8 -*- routes_in = ( ('.*http://site1.dev.* /*', '/site1'), ('.*http://site2.dev.* /*', '/site2')) In this case, in addition to the aforementioned problems, I see an error on every url that is not default/index. That is, http://site1.dev/ shows the default/index, but if I click, let's say, on the register url, the browser attempts to load site1.dev/site1/default/user/register but I receive an invalid function error. At this point, I'm a bit lost. I'm using nginx, and I asume all this could be done through nginx's rewrite module (however I would like to keep it inside web2py, for portability reasons). Also, I must say I've never worked with regular expressions, and in addition, as you can see, this scenario is a little bit different than the classic one-app-per-domain. So, I would really appreciate any advice or help on this. P/S: if someone feels sufficiently trained to resolve the situation, please contact me by private, I'm willing to spend some money to resolve this situation in a professional manner. -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [web2py] Re: Need advice/help with url rewrite: multiple domains, multiple apps, two apps per domain
Thanks for your time Massimo. I didn't know about multi-tenancy in web2py, I've just read a little about that. However I think it's not what I need in this case (but I've just read about multi-tenancy). Let me give some additional details of my case regarding databases (I realised that I didn't mention it in the previous post): Each domain uses its own database. Each domain serves two applications. This two applications share the same database , through symlinks the following folders: databases, models and private. So in web2py/applications/ I would have: ... panel1/ panel1/databases/ panel1/models/ panel1/private/ site1/ site1/databases -- symlink to ../panel1/databases site1/models-- symlink to ../panel1/models site1/private -- symlink to ../panel1/models ... and the same structure repeats itself for site2, site3, etc. A new site is added from time to time. Then I would like each domain accesses applications like this: http://site1.dev/ --- /site1/default/index http://site1.dev/panel --- /panel1/default/index http://site1.dev/panel/default/user/login --- /panel1/default/user/login http://site2.dev/ --- /site2/default/index http://site2.dev/panel --- /panel2/default/index http://site2.dev/panel/default/user/login --- /panel2/default/user/login So, each domain (each pair of siteX and panelX applications) will have its own database, with its own users and permissions. I don't know if this info helps or I've missed the point somewhere :P 2015-04-15 10:51 GMT-03:00 Massimo Di Pierro massimo.dipie...@gmail.com: Did you look into multi tenancy in web2py? You can use routes to map the domain into applications but do not use it to map domains. Use multi tenancy to have different domains map into different slices of the database with their own permissions. On Wednesday, 15 April 2015 08:00:35 UTC-5, Lisandro wrote: I have multiple domains with multiple applications. I've gotten it to work using routes.py, with both approaches: parameter-based and pattern-based system. However, there's a couple of things that still I can't achieve. 1) Two applications per each domain In my case, each domain serves two applications: the main one, and a second one. I need the main one to be accessible through / url. And I need the second one to be accessible through an url that is different to the application name. To clarify: *http://site1.dev http://site1.dev* should serve *site1* app *http://site1.dev/panel http://site1.dev/panel* should serve *panel1* app *http://site2.dev http://site2.dev* should serve *site2* app *http://site2.dev/panel http://site2.dev/panel* should serve *panel2* app Notice that every domain should have the /panel url pointing to the corresponding application (panel1, panel2, etc). 2) Restrict access to specific application according the domain Whether is parameter-based or pattern-based system, all domains endup having access to all applications, for example, http://site1.dev/site2/ is showing site2 application. But I would like that the domain *site1.dev* can only access the applications site1 and panel1, and nothing else. What have I achieved so far? routes.py using parameter-based system - # -*- coding: utf-8 -*- routers = dict(BASE = dict(\ domains = {\ 'site1.dev':'site1', \ 'site2.dev':'site2', \ })) This approach is working, however I don't know how to make */panel* url to serve *panel1* application. Also, the problem of the point 2 remains: all domains can access all applications. routes.py using pattern-based system - # -*- coding: utf-8 -*- routes_in = ( ('.*http://site1.dev.* /*', '/site1'), ('.*http://site2.dev.* /*', '/site2')) In this case, in addition to the aforementioned problems, I see an error on every url that is not default/index. That is, http://site1.dev/ shows the default/index, but if I click, let's say, on the register url, the browser attempts to load site1.dev/site1/default/user/register but I receive an invalid function error. At this point, I'm a bit lost. I'm using nginx, and I asume all this could be done through nginx's rewrite module (however I would like to keep it inside web2py, for portability reasons). Also, I must say I've never worked with regular expressions, and in addition, as you can see, this scenario is a little bit different than the classic one-app-per-domain. So, I would really appreciate any advice or help on this. P/S: if someone feels sufficiently trained to resolve the situation, please contact me by private, I'm willing to spend some money to resolve this situation in a professional manner. -- Resources: - http://web2py.com - http://web2py.com/book