On Nov 28, 2010, at 1:15 PM, Emceha wrote: > > So to get rid of /init/default/ (in my case I need rewrite.py + > modified app.yaml like > > - url: /static/(?P<b>.+) instead of > - url: /(?P<a>.+?)/static/(?P<b>.+) > > Am I thinking right?
I don't know enough about what you can do in app.yaml to comment. Hopefully Massimo or someone else can. Just keep in mind that if GAE sees a URL that it recognizes as static (in its terms), it will try to serve the file directly, and web2py will not run (which means no rewriting). So if you tell GAE that /static/... is a GAE static file, you must have the actual file there, because the URL will not be rewritten by web2py. > > On Nov 28, 10:06 pm, Jonathan Lundell <[email protected]> wrote: >> On Nov 28, 2010, at 12:50 PM, mdipierro wrote: >> >> >> >>> with the app.yaml file that comes with web2py, static files are served >>> by appegnine, not by web2py, therefore routes_out should not rewrite / >>> <app>/static/... >> >> Exactly. >> >> Files that are marked as static in GAE are served directly by GAE. Web2py is >> never invoked, and no rewriting takes place. If you rewrite the URLs, then >> GAE doesn't recognize the file as static, and gives it to web2py, which >> rewrites it. But GAE doesn't allow Python apps to access files that are >> marked as static, hence the blocked-access messages (I don't know why that >> is; presumably they're actually stored elsewhere, or something like that). >> >> If you really, really need to rewrite those URLs, you could tell GAE (via >> app.yaml) that the static directory is not static. That would be less >> efficient, since web2py would have to run for each of those files (though if >> they're cached, that might not be all that bad). >> >> >> >> >> >> >> >> >> >>> On Nov 28, 2:30 pm, Emceha <[email protected]> wrote: >>>> On Nov 28, 8:42 pm, Jonathan Lundell <[email protected]> wrote: >> >>>>> On Nov 28, 2010, at 11:08 AM, Emceha wrote: >>>>> Have you looked at the logger output? Since GAE apparently always logs at >>>>> DEBUG level, you should >>>>> see logs of all URL rewrites arising from your routes.py, as >>>>> 'web2py.rewrite' log entries. At the >>>>> very least you should check to see that the rewritten paths match the >>>>> full path with no rewriting. >> >>>> The only errors from dev_appserver.py I see is that $link got blocked. >>>> It also looks like the link it complains about was already rewritten >>>> by route.py - let me show you working (when I use web2py.py as local >>>> dev server) routes.py >> >>>> routes_in=[ >>>> ('/pliki/$anything', '/init/static/pliki/$anything'), >>>> ('/static/$anything', '/init/static/$anything'), >>>> ('/admin/$anything', '/admin/$anything'), >>>> ('/appadmin/$anything','/init/appadmin/$anything'), >>>> ('/$anything', '/init/default/$anything') >>>> ] >> >>>> routes_out=[ >>>> ('/init/static/pliki/$anything', '/pliki/$anything'), >>>> ('/init/static/$anything', '/static/$anything'), >>>> ('/admin/$anything', '/admin/$anything'), >>>> ('/init/appadmin/$anything','/appadmin/$anything'), >>>> ('/init/default/$anything', '/$anything') >>>> ] >> >>>> So now: my template requests: >> >>>> http://.../static/css/style.css >> >>>> In dev_appserver logs I see >> >>>> ..... Blocking access to static file /init/static/css/ >>>> style.css .... >> >>>> So as mentioned above rewrite somehow worked but was blocked? Maybe >>>> request is not consistent with physical location of requested file? No >>>> idea. >> >>>>> (By "old" and "new" above, do you mean without and with rewriting, >>>>> respectively?) >> >>>> Yep >> >>>> I'm happy to helo to solve this annoying issue :) - I can even create >>>> new clean app so more people can test it. >> >>>> Marcin

