2011/5/3 boscop <[email protected]>: > Thanks for the quick response! > > When using that line, some '?'s in the query string get replaced by > '&': > > TEST 1: > actual query: > http://example.com/foo/bar/?a=b&c=d > > environ keys: > REQUEST_URI: /foo/bar/?a=b&c=d > PATH_INFO: > QUERY_STRING: public_html/index.py&public_html/foo/bar/&a=b&c=d > > TEST 2: > actual query (the second '?' is just to test whether it gets replaced, > too): > http://example.com/foo/bar/?a=b&c=d?e=f > > environ keys: > REQUEST_URI: /foo/bar/?a=b&c=d?e=f > PATH_INFO: > QUERY_STRING: public_html/index.py&public_html/foo/bar/&a=b&c=d?e=f > > TEST 3 > actual query (more question marks): > http://example.com/foo/bar/a=b&c=d?e=f?g=h?i=j > > environ keys: > REQUEST_URI: /foo/bar/a=b&c=d?e=f?g=h?i=j > PATH_INFO: > QUERY_STRING: public_html/index.py&public_html/foo/bar/a=b&c=d&e=f?g=h? > i=j > > Observations: > PATH_INFO is always empty, REQUEST_URI always holds the correct path, > QUERY_STRING replaces the '?' from the RewriteRule and the first one > in the rest of the query string by '&' (but not any other '?'s). > > This would suggest just using the REQUEST_URI, but this page (http:// > blog.dscpl.com.au/2009/09/roadmap-for-python-wsgi-specification.html) > explains why one shouldn't do that. > > So my questions are: Why does this replacement happen? Is there a way > to get the correct query string in environ['QUERY_STRING'] somehow? If > not, can I rely on the behavior that the first two question marks are > always replaced by ampersands? (If that is the case, I could rebuild > the corrent path from this information before passing environ to the > real application.)
I suggested that RewriteRule line just to show what the error was (the infinite recursion) and not as a solution to your empty PATH_INFO original question. Did you try my second answer's suggestion?: SetEnvIfNoCase Request_URI ^\index\.py(.*) PATH_INFO=$1 Regards, Clodoaldo > > > On May 3, 3:11 pm, Clodoaldo Neto <[email protected]> > wrote: >> 2011/5/3 boscop <[email protected]>: >> >> >> >> >> >> > Hi, >> > I'm on a free shared hosting account where I have no access to >> > httpd.conf, but .htaccess. I have no shell access, but FTP and cPanel. >> > Python is available via mod_python and mod_wsgi. I want to use one of >> > the WSGI frameworks for my site. They all require that there is >> > exactly one WSGI application (usually specified with >> > 'WSGIScriptAlias / /path/to/app.wsgi' but this would only work in >> > httpd.conf) which gets the requested path passed in >> > environ['PATH_INFO']. Currently I have 'AddHandler wsgi-script .py' >> > set in .htaccess, but this would cause apache to resolve the path and >> > look for a wsgi script at that location, instead of passing the path >> > to the main application. All frameworks that I checked out are based >> > on there being only one application though (!). So I tried to use >> > mod_rewrite to achieve the passing of the path to the main application >> > like this: >> >> > RewriteEngine On >> > RewriteRule ^(.*)$ /absolute/path/to/index.py$1 [QSA,L,PT] >> >> > However, this causes an internal server error (500) on any request, >> >> The error is an infinite recursion. This will avoid the recursion >> although it still misses the path_info: >> >> RewriteRule ^(.*)$ /absolute/path/to/index.py?$1 [QSA,L,PT] >> >> Regards, Clodoaldo >> >> > and it says "More information about this error may be available in the >> > server error log. Additionally, a 500 Internal Server Error error was >> > encountered while trying to use an ErrorDocument to handle the >> > request.". But no error was logged! (I confirmed that error logging >> > usually works by removing that line and introducing other bugs. Also, >> > having multiple wsgi apps and requesting them individually works, >> > too). >> > This leads me to my question: What would I have to write in .htaccess >> > to cause apache to pass the requested path to the one WSGI application >> > so that it correctly appears in environ['PATH_INFO'] and so that it >> > also handles GET parameters correctly, (and why does the above line >> > prevent error logging)? >> >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "modwsgi" group. >> > To post to this group, send email to [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]. >> > For more options, visit this group >> > athttp://groups.google.com/group/modwsgi?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/modwsgi?hl=en. > > -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/modwsgi?hl=en.
